Tim*_*imB 3 c# iteration excel
我有以下代码:
string result = "";
for(int i=2; i<=excelRange.Rows.Count; i++)
{
result += excelRange.Cells[i, 2].Value2;
}
Run Code Online (Sandbox Code Playgroud)
对于包含数百个条目的 Excel 文件,这需要 5 秒钟。也许有更有效的方法吗?我只想要从 B2 到 Bn 的值。
是的,有一种更有效的方法。
创建一个与您真正需要的单元格完全匹配的范围。
获取此范围的Value2属性。结果将是一个数组类型。
遍历数组
您的方法的问题在于您的应用程序和 Excel 之间存在大量进程间请求。您的方法每个单元格需要两个或三个请求。所提出的方法要快得多,因为它需要预先一些请求,但每个单元不需要额外的请求。
请注意,此操作最多可处理约 4000 个单元。如果需要处理更多单元格,则需要将其拆分为多个范围,每个范围包含的单元格少于 4000 个。
更新
假设 Excel 已经运行,它看起来像这样(自动选择 B 列中正确的行数):
var excelApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
Excel._Worksheet workSheet = (Excel.Worksheet)excelApp.ActiveSheet;
var range = (Excel.Range)workSheet.Range[workSheet.Range["B2"],
workSheet.Range["B2"].End[Excel.XlDirection.xlDown]];
var cellData = (Object[,])range.Value2;
string result = "";
foreach (var cell in cellData) {
result += cell.ToString();
}
Run Code Online (Sandbox Code Playgroud)