C#中将ListView中数据导出到Excel

首先 你需要添加引用Microsoft Excel 11.0 Object Library

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

实现代码如下:

?
private  void  导出数据_Click( object  sender, EventArgs e)
{
     ExportToExecl();
}
/// <summary>
/// 执行导出数据
/// </summary>
public  void  ExportToExecl()
{
     System.Windows.Forms.SaveFileDialog sfd = new  SaveFileDialog();
     sfd.DefaultExt = "xls" ;
     sfd.Filter = "Excel文件(*.xls)|*.xls" ;
     if  (sfd.ShowDialog() == DialogResult.OK)
     {
         DoExport( this .lstPostion, sfd.FileName);
     }
}
/// <summary>
/// 具体导出的方法
/// </summary>
/// <param name="listView">ListView</param>
/// <param name="strFileName">导出到的文件名</param>
private  void  DoExport(ListView listView, string  strFileName)
{
     int  rowNum = listView.Items.Count;
     int  columnNum = listView.Items[0].SubItems.Count;
     int  rowIndex = 1;
     int  columnIndex = 0;
     if  (rowNum == 0 || string .IsNullOrEmpty(strFileName))
     {
         return ;
     }
     if  (rowNum > 0)
     {
         Microsoft.Office.Interop.Excel.Application xlApp = new  Microsoft.Office.Interop.Excel.ApplicationClass();
         if  (xlApp == null )
         {
             MessageBox.Show( "无法创建excel对象,可能您的系统没有安装excel" );
             return ;
         }
         xlApp.DefaultFilePath = "" ;
         xlApp.DisplayAlerts = true ;
         xlApp.SheetsInNewWorkbook = 1;
         Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add( true );
         //将ListView的列名导入Excel表第一行
         foreach  (ColumnHeader dc in  listView.Columns)
         {
             columnIndex++;
             xlApp.Cells[rowIndex, columnIndex] = dc.Text;
         }
         //将ListView中的数据导入Excel中
         for  ( int  i = 0; i < rowNum; i++)
         {
             rowIndex++;
             columnIndex = 0;
             for  ( int  j = 0; j < columnNum; j++)
             {
                 columnIndex++;
                 //注意这个在导出的时候加了“\t” 的目的就是避免导出的数据显示为科学计数法。可以放在每行的首尾。
                 xlApp.Cells[rowIndex, columnIndex] = Convert.ToString(listView.Items[i].SubItems[j].Text) + "\t" ;
             }
         }
         //例外需要说明的是用strFileName,Excel.XlFileFormat.xlExcel9795保存方式时 当你的Excel版本不是95、97 而是2003、2007 时导出的时候会报一个错误:异常来自 HRESULT:0x800A03EC。 解决办法就是换成strFileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal。
         xlBook.SaveAs(strFileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
         xlApp = null ;
         xlBook = null ;
         MessageBox.Show( "OK" );               
     }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值