C# Microsoft Excel加载项性能问题
进一步的代码在.xls上运行得差不多,在.xlsx上运行得相当慢。问题在哪里C# Microsoft Excel加载项性能问题,c#,excel,vsto,C#,Excel,Vsto,进一步的代码在.xls上运行得差不多,在.xlsx上运行得相当慢。问题在哪里 vector = activeSheet.Columns["A", Type.Missing]; double[] temp = new double[vector.Rows.Count]; int i = 0; foreach (var item in vector.Value2) { if (item == null) break; temp[i] = vector.Value2[i
vector = activeSheet.Columns["A", Type.Missing];
double[] temp = new double[vector.Rows.Count];
int i = 0;
foreach (var item in vector.Value2)
{
if (item == null)
break;
temp[i] = vector.Value2[i + 1, 1];
i++;
}
array = new double[i];
for (int j = 0; j < i; j++)
{
array[j] = temp[j];
}
该行包含一个问题:
vector = activeSheet.Columns["A", Type.Missing];
我已将上面的代码更改为:
double[] temp = new double[activeSheet.Rows.Count];
int i = 0;
for (i = 0; i < activeSheet.Rows.Count; i++)
{
var item = (activeSheet.Cells[i + 1, 1] as Excel.Range).Value2;
if (item == null)
break;
temp[i] = item;
}
...
现在它在一眨眼之间就可以工作了。
谢谢@Sayse和@Eddy的建议。你认为什么课程很慢,我认为你正在测试的文件大小相同。谢谢你的评论。我已经用两个包含相同数据的文件进行了测试。xlsx的处理速度相当慢。我刚刚解决了这个问题,但从昨天晚上开始我就一直在思考这个问题。您可能希望添加您的解决方案,作为对自己问题的回答,以便将来对其他人有所帮助。当然,我将添加8小时超时后的代码。问题出在activeSheet.Columns[A,Type.Missing]行中。Xls有65k行限制。Xlsx拥有数百万。代码处理列A中的als行65k,而不是数百万或更慢