列出<custom>到Excel c#

谁能帮我?

我有一个结构

public struct Data { public string aaaAAA; public string bbbBBB; public string cccCCC; ... ... } 

然后一些代码将数据引入列表,创build新列表等。

我想然后运输这个excel,我已经这样做了,

  for (int r = 0; r < newlist.Count; r++) { ws.Cells[row,1] = newlist[r].aaaAAA; ws.Cells[row,2] = newlist[r].bbbBBB; ws.Cells[row,3] = newlist[r].cccBBB; } 

这工作,但它是痛苦的缓慢。 我input了12000行,我的结构有85个元素(所以每行有85列数据)。

任何人都可以帮助这个更快?

谢谢你,Timujin

如果@juharr提到您可以使用OpenXML,请查看ClosedXML库来创buildExcel文档。

使用上面的示例,然后可以使用以下代码:

 var wb = new XLWorkbook(); var ws = wb.Worksheets.Add("Data_Test_Worksheet"); ws.Cell(1, 1).InsertData(newList); wb.SaveAs(@"c:\temp\Data_Test.xlsx"); 

如果你需要一个标题行,那么你只需要手动添加,使用下面的东西( 然后,你会开始插入上面的行第2行 ):

 PropertyInfo[] properties = newList.First().GetType().GetProperties(); List<string> headerNames = properties.Select(prop => prop.Name).ToList(); for (int i = 0; i < headerNames.Count; i++) { ws.Cell(1, i + 1).Value = headerNames[i]; } 

在性能要求上,这似乎比遍历数组更有效。 我已经做了一些基本的testing,并且为了包含2个属性的样本对象插入了20 000行,总共花费了1秒。