【发布时间】:2018-10-01 16:27:28
【问题描述】:
我想从 Excel 中读取大量单元格到 C# 中的二维数组。 使用 Microsoft.Office.Interop.Excel 并一一读取单元格太慢了。我知道如何将数组写入范围(Microsoft.Office.Interop.Excel really slow),但我想在相反的方向进行
_Excel.Application xlApp = new _Excel.Application();
_Excel.Workbook xlWorkBook;
_Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlWorkBook = xlApp.Workbooks.Open(path);
xlWorkSheet = xlWorkBook.Worksheets["Engineering BOM"];
_Excel.Range range = (_Excel.Range)xlWorkSheet.Cells[1, 1];
range = range.get_Resize(13000, 9);
string[,] indexMatrix = new string[13000, 9];
// below code should be much faster
for (int i = 1; i < 1300; i++)
{
for (int j = 1; j < 9; j++)
{
indexMatrix[i, j] = xlWorkSheet.Cells[i, j].Value2;
}
}
因此,我希望在数组中获取单元格范围的值(范围大小与数组大小完全相同)。现在应用程序正在逐个单元格读取并将数据写入数组,但速度太慢。有什么方法可以直接将整个范围复制到单元格?
提前谢谢你:)
【问题讨论】:
-
嗯什么?请说明问题所在。
-
您知道如何从 Excel 的范围中获取值并将其粘贴到数组中吗?
-
当然,但是您没有指定哪个范围,问题出在哪里,到目前为止您尝试了什么,您没有包含代码的 sn-p 以重新创建完整且可验证的例子。你没有发布你想要的结果。你什么都没做。这不是免费的编码服务。在再次询问之前,请阅读how to ask 以及如何重新创建complete and verifiable 示例。并编辑您的帖子以添加上述信息。
-
是的,对不起。太多的心理捷径
-
我同意@Simo。使用数据表。但是为了回答您的查询,
MYARRAY = Rng.Value将一次性将所有值存储到数组中。您不需要为此循环