S2UnitのXlsWriter
テストケースとテストデータをラウンドトリップしながら作成する為に用意されている機能の一つにXlsWriter
を使ってDataSetからエクセルファイルへ出力する事ができる。
しかし、現状では多少の不具合等があり利用者が困惑するケースがあるのではないかと思う。まず、エクセルファイルを出力する場合事前にフォルダが作成されていないと「failed: エラー情報 : E_FAIL(0x80004005) がありません。」のエラーとなります。メッセージからではなんの事か不明なためハマル人が出てくると思う、ドキュメントへ記載しても見逃す人が出るだろうからJETで生成する前にパスのフォルダが無い場合はメソッド内で暗黙的に生成した方がいいかな?
次に、データ型の扱いに若干問題があるようで
- SQLServerではtimestamp,image型等のバイナリカラムが定義されているレコードはエラーとなる。imageは無理としてもtimestampが使えないと困る
- データ型のマッピングがDBとしてのExcelのデータ型に記載されている定義と異なりSQLServerのbit型などはエラーとなるようだ。
- 日付の扱いがDB上で分以下が初期値(2006-04-14 11:24.000)ではなく(2006-04-14 11:24.215)等へセットされたレコードは出力時にエラーとなる。エクセルを手動作成できちんと書式設定が行われている場合は読込みは正常に行えるようだがJETを通して出力する際に書式は指定出来そうに無いため、出力時ゼロ埋しS2Assertでの検証は分単位までにする等の対応が必要かなぁ
id:rmiyaさん 対応可能ですか?とか言ってみる(^^;
検証した環境は.NET 1.1、SQLServer2000、Excel2000