背景: データベースから多数の asp.net c# GridViews と ListViews を作成しています。その後、ユーザーはそれらを Excel にエクスポートできます。ネイティブの Excel (html ではなく) としてエクスポートしたい。オフィス オートメーションを使用できません。問題なく動作する JET を使用しています。私はユーザーのマシンを制御できません。
質問: エクスポートを行うとき、Jet に各フィールドの型を伝える必要があります。私の場合は、"text" (varchar) または "numeric" (double) です。違いは、数値列をエクスポートする場合、ユーザーは Excel でデータを合計できることです。一方、文字列は先頭にアポストロフィを付けてエクスポートされるため、算術ではあまり使用されません。
現在、Grid/ListView の最初のデータ行を解析し、各値が数値かテキストかを確認し、それに応じて列に型を割り当てます。最初の列に数値のように見えるが実際にはテキスト文字列である場合を除いて、これは機能します。これらのエクスポートの一部は非常に大きいため、正しいデータ型を持っていることを確認するために、すべての行を解析したくありません。
データベースから Grid/ListView をロードすると、データベースは各フィールドの型を確実に認識します。だから私の質問は... Grid/ListViewアイテムの背後にあるデータベースアイテムのタイプを抽出するにはどうすればよいですか? 項目の属性として明示的にコーディングすることもできますが、それは、取得できる場合に限り、既に持っている情報と重複しています。
DataTable がある場所から基になる型を取得できることはわかっていますが、ほとんどの場合、便利なテーブルはなく、Grid/ListView だけです。
-- (編集) 空文字列を null 可能な数値列に挿入しようとすると、Jet がスローすることに注意してください。これを行う方法は、挿入ステートメントからその列名を省略するか、ゼロを出力することです。