我的任务是隐藏在一个特定行中是否存在串的基础上的Excel工作簿中/取消隐藏行。我面临的问题是,使用以下代码在1000行上执行此任务需要大约20秒。该文件可能有多达2k-3k行,我想减少这个加载时间。隐藏/取消隐藏列在Excel在VSTO应用程序C#
需要注意的是,当我在代码中注释“隐藏/取消隐藏”整行(currentFind.EntireRow.Hidden =!isShown;)时,那么excel文件只需要4-5秒即可加载。这使我得出这样的结论:它是一个耗时的行隐藏部分,而不是搜索字符串部分。在开始
Worksheet activeWorksheet= Globals.ThisAddIn.Application.ActiveSheet;
Range usedRange = activeWorksheet.UsedRange;
Range currentFind = null;
Range firstFind = null;
currentFind = activeWorksheet.UsedRange.Find(searchInput);
while (currentFind != null)
{
// Keep track of the first range you find.
if (firstFind == null)
{
firstFind = currentFind;
}
// If you didn't move to a new range, you are done.
else if (currentFind.get_Address(XlReferenceStyle.xlA1)
== firstFind.get_Address(XlReferenceStyle.xlA1))
{
break;
}
currentFind.EntireRow.Hidden = !isShown;
currentFind = usedRange.FindNext(currentFind);
}
没有为您的解决方案的工作?如果是这样,请将其标记为答案 – dgorti