13

Excel シートから読み取り、マークされた選択 (領域) を多次元配列に読み込むにはどうすればよいですか? Excel の列は、複数の値を含むため、それ自体が多次元配列である可能性があります。

現在のアイデア (これがどれほど良いか悪いかはわかりません) は、すべての Excel.Area (選択されたフィールド) に対して for ループを実行し、そのフィールドの内容を多次元配列に追加することです。多次元配列は object[,] 型であり、非ジェネリックであるため、便利な add() メソッドはありません。すべて手動で行う必要があります。

このアプローチで問題ないのか、それともより効率的に実行できるのか、考えはありますか?

4

2 に答える 2

19

Range の値を配列として読み取ることができます。

using (MSExcel.Application app = MSExcel.Application.CreateApplication()) 
{
    MSExcel.Workbook book1 = app.Workbooks.Open( this.txtOpen_FilePath.Text);
    MSExcel.Worksheet sheet = (MSExcel.Worksheet)book1.Worksheets[1];
    MSExcel.Range range = sheet.GetRange("A1", "F13");

    object value = range.Value; //the value is boxed two-dimensional array
}

このコード スニペットは、MS Office の .NET ラッパーからのものです。しかし、MS Excel の VSTO や VBA にも同じ原則があります。

于 2009-05-26T12:31:32.483 に答える
2

SpreadsheetGearでこれを行うためのC#コードは次のとおりです。

    // Load the workbook.
    SpreadsheetGear.IWorkbook workbook = SpreadsheetGear.Factory.GetWorkbook(@"MyWorkbook.xlsx");
    // Get a range of cells as an array of object[,].
    object[,] values = (object[,])workbook.Worksheets["MySheet"].Cells["A1:J10"].Value;

SpreadsheetGearは、セルに一度に1つずつアクセスするための高速APIも提供するため、パフォーマンスを犠牲にすることなく値を配列にコピーすることを回避できます。

免責事項:私はSpreadsheetGearLLCを所有しています

于 2009-05-26T14:18:49.147 に答える