zoukankan      html  css  js  c++  java
  • C#(Winform开发)Excel导出

      网上搜索了一下导出功能,有好些不能使用或者缺少引用文件,浪费本人时间。所以记录一个能用的例子,(代码转载)

      开发工具vs2015,首先点击  (工具—>NuGet包管理器—>管理解决方案的 NuGet 程序包—>搜索:  Microsoft.Office.Interop.Excel 安装)
      
      代码如下:
          

     1    //导出Excel
     2         private void ExportExcel(DataTable dt)
     3         {
     4             DataSet ds = new DataSet();//数据源
     5             ds.Tables.Add(dt);
     6             if (ds == null) return;
     7             string saveFileName = "";
     8             bool fileSaved = false;
     9             SaveFileDialog saveDialog = new SaveFileDialog();
    10             saveDialog.DefaultExt = "xls";
    11             saveDialog.Filter = "Excel文件|*.xls";
    12             saveDialog.FileName = "Sheet1";
    13             saveDialog.ShowDialog();
    14             saveFileName = saveDialog.FileName;
    15             if (saveFileName.IndexOf(":") < 0) return; //被点了取消
    16 
    17             Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
    18 
    19             if (xlApp == null)
    20             {
    21                 MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");
    22                 return;
    23             }
    24             Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
    25             Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
    26             Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1 
    27                                                                                 //写入字段 
    28             for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
    29             {
    30                 worksheet.Cells[1, i + 1] = ds.Tables[0].Columns[i].ColumnName;
    31             }
    32             //写入数值 
    33 
    34             for (int r = 0; r < ds.Tables[0].Rows.Count; r++)
    35             {
    36                 for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
    37                 {
    38                     worksheet.Cells[r + 2, i + 1] = ds.Tables[0].Rows[r][i];
    39                 }
    40                 System.Windows.Forms.Application.DoEvents();
    41             }
    42             worksheet.Columns.EntireColumn.AutoFit();//列宽自适应。
    43             //Microsoft.Office.Interop.Excel.Range rg = worksheet.get_Range(worksheet.Cells[2, 2], worksheet.Cells[ds.Tables[0].Rows.Count + 1, 2]);
    44             Microsoft.Office.Interop.Excel.Range rg = worksheet.Range[worksheet.Cells[2, 2], worksheet.Cells[ds.Tables[0].Rows.Count + 1, 2]];
    45             rg.NumberFormat = "00000000";
    46             if (saveFileName != "")
    47             {
    48                 try
    49                 {
    50                     workbook.Saved = true;
    51                     workbook.SaveCopyAs(saveFileName);
    52                     fileSaved = true;
    53                 }
    54                 catch (Exception ex)
    55                 {
    56                     fileSaved = false;
    57                     MessageBox.Show("导出文件时出错,文件可能正被打开!
    " + ex.Message);
    58                 }
    59             }
    60             else
    61             {
    62                 fileSaved = false;
    63             }
    64             xlApp.Quit();
    65             GC.Collect();//强行销毁 
    66             if (fileSaved && System.IO.File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName); //打开EXCEL
    67         }

        调用时编辑好传入的datatable的内容就行,dt的表头就是Excel的标头。

  • 相关阅读:
    例程 | 串口助手Comm Assist
    教程 | 蓝牙设备查找类CxBthRadio & CxBthRadioFind
    教程 | 服务端套接字类CxServerSocket
    openlayers 3加载GeoServer发布的wfs类型服务
    Geoserver端口冲突解决方案(二)
    Geoserver端口冲突解决方案
    GeoServer基础教程(四):空间数据互操作的接口规范WMS、WFS和WCS
    GeoServer基础教程(三):部署发布Shapefile地图数据
    GeoServer基础教程(二):GeoServer的Web管理界面快速入门
    GeoServer基础教程(一):环境搭建篇
  • 原文地址:https://www.cnblogs.com/XinruiIIiiiii/p/13868085.html
Copyright © 2011-2022 走看看