C#を使用して、リストのリスト(つまりList<List<T>>
)をExcel 2003にエクスポートする直接的な方法はありますか?
大きなテキストファイルを解析してExcelにエクスポートしています。一度に1つのセルを書き込むと、オーバーヘッドが大きくなりすぎます。List<T>
行や列の数を指定する必要がないように、を使用することにしました。
現在、ファイルの終わりまで待ってから、内容をList<List<object>>
2次元配列に入れています。次に、配列をExcel.Rangeオブジェクトの値として設定できます。動作しますが、行や列の数を気にせずにリストのリストを取得して、A1からどこにでもワークシートにダンプできるはずです。
置き換えまたは改善したいコードのスニペットを次に示します。
object oOpt = System.Reflection.Missing.Value; //for optional arguments
Excel.Application oXL = new Excel.Application();
Excel.Workbooks oWBs = oXL.Workbooks;
Excel._Workbook oWB = oWBs.Add(Excel.XlWBATemplate.xlWBATWorksheet);
Excel._Worksheet oSheet = (Excel._Worksheet)oWB.ActiveSheet;
int numberOfRows = outputRows.Count;
int numberOfColumns = int.MinValue;
//outputRows is a List<List<object>>
foreach (List<object> outputColumns in outputRows)
{
if (numberOfColumns < outputColumns.Count)
{ numberOfColumns = outputColumns.Count; }
}
Excel.Range oRng = oSheet.get_Range("A1", oSheet.Cells[numberOfRows,numberOfColumns]);
object[,] outputArray = new object[numberOfRows,numberOfColumns];
for (int row = 0; row < numberOfRows; row++)
{
for (int col = 0; col < outputRows[row].Count; col++)
{
outputArray[row, col] = outputRows[row][col];
}
}
oRng.set_Value(oOpt, outputArray);
oXL.Visible = true;
oXL.UserControl = true;
これは機能しますが、Excelのためだけに配列を作成する中間ステップを実行するよりも、リストを直接Excelに使用したいと思います。何か案は?