C#如何将ListView中的数据导出到Excel中

首先,我们需要添加引用。选择Microsof Excel xx.0 Object Library,不同电脑的COM可能不一样,这里用xx表示可能的数字。

添加方法:项目中的引用->右击选择“添加引用”->选择COM,找到上面的组件->点击“确定”。



下面是简要的代码:

[csharp]  view plain  copy
  1. // 添加命名空间  
  2. using Excel = Microsoft.Office.Interop.Excel;  

[csharp]  view plain  copy
  1. // 定义全局变量  
  2. Excel.Application App = new Excel.Application();  
  3. Excel.Workbook wb;  
  4. Excel._Worksheet ws;  
  5. object misValue = System.Reflection.Missing.Value;  
  6. // 自定义创建新excel文件的函数  
  7. public bool createNewFile(string newFileName)  
  8. {  
  9.     if (app == null)  
  10.     {  
  11.         MessageBox.Show("无法创建excel对象,请检查您的系统是否安装了excel。");  
  12.         return false;  
  13.     }  
  14.     App.DisplayAlerts = true;  
  15.     App.Visible = false// invisible  
  16.     wb = App.Workbooks.Open(newFileName, misValue, true, misValue,   
  17.                             misValue, misValue, misValue, misValue,   
  18.                             misValue, true, misValue, misValue, misValue, misValue, misValue);  
  19.     return true;  
  20. }  
[csharp]  view plain  copy
  1. // 保存excel文件  
  2.   public void saveFile(string newFileName)  
  3.   {  
  4.       wb.SaveAs(newFileName, Excel.XlFileFormat.xlWorkbookNormal, misValue,   
  5.                  misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive,   
  6.                  misValue, misValue, misValue, misValue, misValue);  
  7.       wb.Close(true, misValue, misValue);  
  8.       App.DisplayAlerts = false;  
  9.       App.AlertBeforeOverwriting = false;  
  10.       App.Quit();  
  11.       MessageBox.Show("文件已经生成。");  
  12.       //System.Diagnostics.Process.Start("E:\\");  
  13.   }  
[csharp]  view plain  copy
  1. // 按照一格一格写入的方式自定义函数  
  2. public void writeCell(string sheet, int row, int col, string cont)  
  3. {  
  4.     ws = wb.Sheets[sheet];  
  5.     ws.Activate();  
  6.     ws.Cells[row, col] = cont;  
  7. }  
[csharp]  view plain  copy
  1. private void exportListViewData(ListView lstView, string tempFileName, string finalFileName)  
  2. {  
  3.     int nRow =lstView.Items.Count;  
  4.     int nCol = lstView.Columns.Count;  
  5.     if (nRow == 0)  
  6.     {  
  7.         MessageBox.Show("保存错误,没有任何数据。");  
  8.         return;  
  9.     }  
  10.     createNewFile(tempFileName);  
  11.     for (int i = 0; i < nRow; i++)  
  12.     {  
  13.         for (int j = 0; j < nCol; j++)  
  14.         {  
  15.             writeCell("sheet1", i + 3, j + 2, lstView.Items[i].SubItems[j].Text.ToString());  // 默认sheet1工作表,可以修改  
  16.         }  
  17.     }  
  18.     saveFile(finalFileName);  
  19. }  


©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页