1

更新1:

私は Excel 2010 を使用しており、Web を検索したところ、win フォームやコンソールなどを介してこれを行う方法が何千も見つかりました。しかし、DLL を介してこれを行う方法が見つかりません。また、オンラインのサンプルはどれも完全ではありません。

更新終了

以下の Excel サンプル シートに示すように、私は探してゴーグルしましたが、探しているものを特定できませんでした。

各セルのデータを読み取り、変数に格納する方法を探しています

私はこのようなことを始めました:

Workbook workbook = open(@"C:\tmp\MyWorkbook.xls");
IWorksheet worksheet = workbook.Worksheets[0];
IRange a1 = worksheet.Cells["A1"];
object rawValue = a1.Value;
string formattedText = a1.Text;
Console.WriteLine("rawValue={0} formattedText={1}", rawValue, formattedText);

エクセルシート

4

3 に答える 3

2

あなたのコードは、いくつかの変更で機能します。

覚えておくべきことの 1 つは、Excel ワークシートは 0 から始まるのではなく 1 から始まる (そして IWorksheet の代わりに Worksheet を使用する) ことです。

Worksheet worksheet = workbook.Worksheets[1];

範囲を取得するにはget_Range()、worksheet オブジェクトで呼び出すのが最も簡単です (そして、IRange の代わりに Range を使用します)。

Range a1 = worksheet.get_Range("A1");

これら 2 行のコードを変更すると、例は正常に動作します。

アップデート

「完全な」例を次に示します。

  1. ソリューション エクスプローラーでプロジェクトを右クリックし、[参照の追加] をクリックします。
  2. [COM] タブをクリックし、リストをコンポーネント名で並べ替えます。リストで「Microsoft Excel 14.0 Object Library」を見つけて選択します。[OK] をクリックします。
  3. これを実行するコード ファイルに、using Microsoft.Office.Interop.Excel;
  4. あなたの例から可能な限り変更したこのコードを使用してください:

var excel = new Microsoft.Office.Interop.Excel.Application();
Workbook workbook = excel.Workbooks.Open(@"C:\tmp\MyWorkbook.xls");
Worksheet worksheet = workbook.Worksheets[1];
Range a1 = worksheet.get_Range("A1");
object rawValue = a1.Value;
string formattedText = a1.Text;
Console.WriteLine("rawValue={0} formattedText={1}", rawValue, formattedText);
于 2012-08-15T23:58:21.950 に答える
2
Excel.Sheets sheets = workbook.Worksheets;

Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(1);


System.Array myvalues;


Excel.Range range = worksheet.get_Range("A1", "E1".ToString());

myvalues = (System.Array)range.Cells.Value;
于 2012-08-15T22:43:40.593 に答える
0

com コンポーネントと dll の登録で争いたくない場合は、

Excelを読む最良の方法は、Excel Reader for .NET です。

私は長い間それを使用してきましたが、それはうまく機能していると言えます。

excelReader.IsFirstRowAsColumnNamesプロパティはすべてを簡単にします。データセット内でデータを再生できます。

于 2012-08-15T23:12:51.547 に答える