2017-09-04 120 views
0

我想操纵使用ClosedXML的大型Excel文件。它需要无限的时间来处理。例如,删除30MB文件中的10列,从不返回!其他人是否遇到过与ClosedXML相似的问题。我的代码是用C#编写的。以下是样本。ClosedXML:大型Excel文件删除列

protected void deleteYears(IXLWorksheet ws) 
    { 
     // Remove columns 
     List<IXLColumn> deletecols = (from p in ws.Rows("6").CellsUsed() 
             where p.Value.ToString().ToUpper().StartsWith("XYZ") 
             select p.WorksheetColumn()).ToList<IXLColumn>(); 
     foreach (IXLColumn x in deletecols) 
     { 
      x.Delete(); 
     } 
    } 

回答

0

你应该实现 “更好的lambda表达式” https://github.com/ClosedXML/ClosedXML/wiki/Better-lambdas

protected void deleteYears(IXLWorksheet ws) 
{ 
    // Remove columns 
    List<IXLColumn> deletecols = ws 
     .Row(6) 
     .CellsUsed(c => c.Value.ToString().ToUpper().StartsWith("XYZ")) 
     .Select(c => c.WorksheetColumn()).ToList(); 

    foreach (IXLColumn x in deletecols) 
    { 
     x.Delete(); 
    } 
}