テーブル定義書を EXCELで記述しているプロジェクトは多いです。この定義書からCreate文やストアード/トリガーを生成させるのはよくある事です。
一度書いたものは有効利用したいのは、我々IT屋の本能ですが、その手段はどうしてます?
VS2008にはVSOTが付いてますが、実務の現場は 素のVS2005が多く、VSOTでの利用は少ないです。
EXCEL_VBAマクロを書くケースが多い気がします。最近VBAマクロはVB6臭く感じて、消極的利用になりました。
.net言語を使い、CreateObjectで excelをインスタンス化しての利用は、おかしくなったとき、Processが残ったままになったり、複数起動してメモリ圧迫したり、原則がCOM動作になりそうなので、気が進みません。
ADO.NET/OleDB を介しての操作だと、.net言語で記述できるので、最近のお気に入りです。
ところが、ExcelシートをDataTableに取り込んだ時点で、困ったことも起こります。DataTableなので列ごとの型が決まるので、Excelシートの上部にTextが入っていて、下部に数値が入っているとき、列属性が文字に設定されるようで、数字はNULLに置換されてしまいます。
テーブル定義書の頭の3~5行はタイトルや作成者など属性記述が多く、実際の定義部分はそれ以降になっているケースが多いかと思います。数値がNULLになるのは困りものです。
これは仕様のようで、不可避のようです。回避策として、 上部のタイトル部と、内容部の2つのDataTableに読み込み、文を生成するようにしました。
使い慣れた、.net語での開発は VBAでの開発に比べて快適で、GJになりました。
それにしても、同じ列に文字と数字が混在するのはExcelでは当然存在することなので、NULL置換でなく、数値=>文字 で取り込んで欲しいなと思うのです。
型違反も例外も起こらずに、一方的にNULL置換するのは、「安全側に壊れる」という原則に反する気もするのですが....ブツブツ。