首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以在多线程中对Excel表进行排序吗?

可以在多线程中对Excel表进行排序吗?
EN

Stack Overflow用户
提问于 2012-11-19 14:31:45
回答 2查看 451关注 0票数 1

我的代码如下:

代码语言:javascript
复制
Parallel.ForEach(listSheets, (xlWorkSheet1) =>
{
  //  Excel.Worksheet xlWorkSheet1 = (Excel.Worksheet)excelbk.Worksheets["Sheet1"];
  xlRange = (Excel.Range)xlWorkSheet1.Cells[xlWorkSheet1.Rows.Count, 1];
  lock (xlRange)
  {
     //   nRows = (long)xlRange.get_End(Excel.XlDirection.xlUp).Row;
     nRows = xlWorkSheet1.UsedRange.Cells.Rows.Count;
     xlRange = (Excel.Range)xlWorkSheet1.Rows["5:" + nRows, Type.Missing];
     xlRange.Sort(xlRange.Columns[clnum1, Type.Missing], 
                  Excel.XlSortOrder.xlAscending,
                  xlRange.Columns[clnum2, Type.Missing], 
                  Type.Missing, 
                  Excel.XlSortOrder.xlAscending,
                  Type.Missing, 
                  Excel.XlSortOrder.xlAscending,
                  Excel.XlYesNoGuess.xlNo, 
                  Type.Missing, 
                  Type.Missing,
                  Excel.XlSortOrientation.xlSortColumns,
                  Excel.XlSortMethod.xlStroke,
                  Excel.XlSortDataOption.xlSortTextAsNumbers,
                  Excel.XlSortDataOption.xlSortNormal,
                  Excel.XlSortDataOption.xlSortNormal);

     Console.WriteLine("Sheet{0} have been sorted", xlWorkSheet1.Name);
  }
}

listSheets被定义为一个列表,当我调试它时,它会显示出运行了问题的COM异常的错误。

System.Runtime.InteropServices.COMException应用程序繁忙(RPC_E_CALL_REJECTED 0x80010001)被被调用者拒绝(RPC_E_SERVERCALL_RETRYLATER 0x80010A)

EN

回答 2

Stack Overflow用户

发布于 2012-11-19 15:57:01

Excel不支持多线程互操作调用。内部,它是多线程的。例如,您可以在“选项”页面中启用多线程重新计算,以显著提高性能。不过,恐怕你不可能形成多线程互操作。

票数 0
EN

Stack Overflow用户

发布于 2012-11-19 16:59:47

正如code4life所说: Excel不支持多线程互操作调用。而且,由于Excel的排序方法在最新版本中已经是多线程的,所以尝试多线程的方法是没有意义的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13455902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档