.NET在Winform开发中,如何高效的将ListView中的数据导出至EXCEL中,谢谢
以下是网上找的一段代码,可是数据稍稍大一些,确实很慢
请问各位高手有什么好的方法呢,谢谢~~
这个类能实现ListView数据导出成Excel的功能,但是还是有些美中不足,就是效率不是很好,如果数据量比较大的话,建议用其他方法,不过我也没有找到比较好的办法,哪位仁兄有好的方法记得共享一份给小弟,先谢谢啦。
ListView数据导出成Excel#region ListView数据导出成Excel
/**//// <summary>
/// ListView数据导出成Excel
/// </summary>
/// <param name="listviewname">ListView控件ID</param>
public static void ExpToExcel(ListView listviewname)
{
if (listviewname.Items.Count == 0) return;
Excel.Application excel = new Excel.Application();
Excel.Workbooks workbooks = excel.Workbooks;
Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
Excel.Sheets worksheets = workbook.Worksheets;
Excel.Worksheet sheet = (Excel.Worksheet) worksheets.get_Item(1);
excel.Visible = true;
Excel.Range range;
excel.Cells.Select();
excel.Cells.RowHeight = 30;
excel.Cells.Font.Size = 10;
excel.Cells.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
int rowPos = 2;
range = excel.get_Range(sheet.Cells[rowPos,1],sheet.Cells[rowPos,1]);
range.Select();
for(int i=1;i<=listviewname.Columns.Count;i++)
{
range = excel.get_Range(sheet.Cells[rowPos,i],sheet.Cells[rowPos,i]);
range.Borders.LineStyle = 1;
range.Font.Name = "华文仿宋";
range.Font.Size = 16;
range.Font.Bold = true;
range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
range.ColumnWidth = 18;
sheet.Cells[rowPos,i] = listviewname.Columns[i-1].Text.ToString();
}
rowPos++;
foreach(ListViewItem item in listviewname.Items)
{
for(int i=1;i<=listviewname.Columns.Count;++i)
{
range = excel.get_Range(sheet.Cells[rowPos,i],sheet.Cells[rowPos,i]);
range.Borders.LineStyle = 1;
range.Font.Name = "华文仿宋";
range.Font.Size = 12;
range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
// range.NumberFormat = Excel.xlColumnDataType.xlTextFormat ;
range.NumberFormat = Excel.XlParameterDataType.xlParamTypeUnknown ;
sheet.Cells[rowPos,i] = item.SubItems[i-1].Text;
}
rowPos++;
}
GC.Collect() ;
}
#endregion