XlsWriterのデータ型の扱い
id:wataru87さんからの指摘どおりS2Container.NET 1.1ではXlsWriterのデータ型の扱いに問題があります。
そのため、S2Container.NET.Javaと同じように仕様を合わせる形で修正します。
下記の表が、S2Container.NET.JavaとS2Container.NETのデータ型マッピングになります。
ORACLE 10g | SQL Server 2000 | java.sql.Types | S2JDBC | S2ADO | System.Data,DbType | Excel | |||
---|---|---|---|---|---|---|---|---|---|
NUMBER | bit | BIT | OBJECT | Boolean | Boolean | BIT | |||
NUMBER | tinyint | TINYINT | Short | Byte | Byte | NUMBER | |||
NUMBER | smallint | SMALLINT | Short | Int16 | Int16 | NUMBER | |||
NUMBER | int | INTEGER | Integer | Int32 | Int32 | NUMBER | |||
NUMBER | bigint | BIGINT | Long | Int64 | Int64 | NUMBER | |||
FLOAT | float | FLOAT | Float | Double | Double | NUMBER | |||
REAL | real | REAL | Float | Single | Single | NUMBER | |||
FLOAT | - | DOUBLE | Double | Double? | Decimal | NUMBER | |||
NUMBER | numeric | NUMERIC | BigDecimal | Decimal | Decimal | NUMBER | |||
NUMBER | decimal | DECIMAL | BigDecimal | Decimal | Decimal | NUMBER | |||
CHAR | char | CHAR | String | AnsiStringFixedLength | String | VARCHAR | |||
VARCHAR2 | varchar | VARCHAR | String | String | String | VARCHAR | |||
LONG | text | LONGVARCHAR | String | String | AnsiString | VARCHAR | |||
DATE | - | DATE | Timestamp | DateTime | Date | DATE | |||
DATE | - | TIME | java.sql.Time | DateTime | Time | DATE | |||
TIMESTAMP | datetime | TIMESTAMP | Timestamp | DateTime | DateTime | DATE | |||
RAW | binary | BINARY | BINARY | byte[] | Binary | VARCHAR | |||
BLOB | varbinary | VARBINARY | BINARY | byte[] | Binary | VARCHAR | |||
LONG RAW | image | LONGVARBINARY | BINARY | byte[] | Binary | VARCHAR | |||
money | DECIMAL | BigDecimal | BigDecimal | Decimal | Decimal | NUMBER | |||
smalldatetime | TIMESTAMP | Timestamp | DateTime | DateTime | DATE | ||||
timestamp | BINARY | byte[] | byte[] | byte[] | Binary | VARCHAR | |||
guid | Guid | Guid | - | - | - | - | |||
BLOB | varbinary | BLOB | ? | byte[] | Binary | VARCHAR |
とりあえず、実装できたので近々svnへアップする予定です。
ただ、下記の制限事項があります。
- 数値型は15桁までの精度になります。16桁以上は切り捨てられます。
- 時刻型は秒までの精度になります。ミリ秒は切り捨てられます。
- バイナリ型はJava版のようにセルフォーマットに指定できないため、"\\B\\:@"の文字列をセルに直接埋め込んでいます。