1

いいえ、ADO.NET では問題を解決できません。使用している Excel ファイルには表形式の情報が含まれていないためです。つまり、クエリするものは何もなく、シートの名前とシートの数は異なります。

基本的に私の仕事は、Excel ドキュメント内のすべてのセルを検索し、他のデータに対して検証することです。

今私が持っているのは、.xls ファイルの内容を表す byte[] 配列だけです。文字列への変換は単なるバイナリ データであるため、意味がありません。

COM 相互運用機能を使用してバックグラウンドで Excel を実行する場合、バイト [] 配列形式のバイナリ データを挿入することは可能ですか、それともファイルをディスクに保存してから、ファイルを開いて各行をスキャンするプロセスを自動化する必要がありますか?

もっと簡単にできる方法はありませんか?

4

2 に答える 2

2

.NET を使用して Excel ファイル (.xls) のバイナリ データを読み取る方法は
いくつかあります。Excel ファイル形式は何度か変更されているため、ファイルをネイティブに読み取るのは大変な作業であり、バージョンに依存するため、通常はお勧めしません。 . 表形式のデータを読み取るために、ほとんどの人は ADO.NET を選択しますが、ほのめかしたように、フォーマットや検出が必要な場合、MS は COM Interop をお勧めします。

COM 相互運用機能を使用してバックグラウンドで Excel を実行する場合、バイト [] 配列形式のバイナリ データを挿入することは可能ですか?

Excel COM オブジェクト モデルでは、2 次元オブジェクト配列 (object[,]) で設定した Range オブジェクトにデータを一括設定できます。

または、ファイルをディスクに保存してから、ファイルを開いて各行をスキャンするプロセスを自動化する必要がありますか?

いいえ、最初に保存しなくても、「プロセス外」の COM サーバー (Excel) と対話できます。データを設定したり、メモリ内でフォーマットしたりできます。

もっと簡単にできる方法はありませんか?
はい、Spreadsheet Gearをチェックアウトしてください。彼らのオブジェクト モデルは com モデルとほぼ同じですが、Excel をまったく必要としません。また、大規模なデータの操作が桁違いに高速です。安くはありませんが (前回確認したときは 1000 ドル)、コーディングの手間を大幅に節約できます。(私はスプレッドシートのギアとはまったく関係がありません)

于 2012-05-18T23:41:38.957 に答える
1

NPOIを使用してXLSファイルを開いて読み取ることができます。基本的には、シート/行/列をループしてデータを探します。私は通常、NPOIを使用して、ワークシート全体のランダムセルにデータを含むXLSフォームを読み書きします。

于 2012-05-18T23:19:29.937 に答える