使用 C#,是否有将列表列表(即List<List<T>>
)导出到 Excel 2003 的直接方法?
我正在解析大型文本文件并导出到 Excel。一次写入一个单元格会产生过多的开销。我选择使用List<T>
这样我就不必担心指定行数或列数。
目前,我等到文件结束,然后将我的内容List<List<object>>
放入一个二维数组中。然后可以将数组设置为 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;
这行得通,但我宁愿直接将 List 用于 Excel,而不是仅仅为了 Excel 而创建数组的中间步骤。有任何想法吗?