• Winform datagirdview导出Excel 封装方法 好用!!!


    转自:https://www.cnblogs.com/chaowang/p/6265698.html

    1,窗体设计

    首先需要引入程序集:Microsoft.Office.Interop.Excel  (如果没有引用过的需要右键添加引用再搜索就行了)

    实现的方法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    /// <summary>
       ///
       /// </summary>
       /// <param name="fileName">文件路径</param>
       /// <param name="myDGV">控件DataGridView</param>
       private void ExportExcels(string fileName, DataGridView myDGV)
       {
           string saveFileName = "";
           SaveFileDialog saveDialog = new SaveFileDialog();
           saveDialog.DefaultExt = "xls";
           saveDialog.Filter = "Excel文件|*.xls";
           saveDialog.FileName = fileName;
           saveDialog.ShowDialog();
           saveFileName = saveDialog.FileName;
           if (saveFileName.IndexOf(":") < 0) return//被点了取消
           Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
           if (xlApp == null)
           {
               MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");
               return;
           }
           Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
           Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
           Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
           //写入标题
           for (int i = 0; i < myDGV.ColumnCount; i++)
           {
               worksheet.Cells[1, i + 1] = myDGV.Columns[i].HeaderText;
           }
           //写入数值
           for (int r = 0; r < myDGV.Rows.Count; r++)
           {
               for (int i = 0; i < myDGV.ColumnCount; i++)
               {
                   worksheet.Cells[r + 2, i + 1] = myDGV.Rows[r].Cells[i].Value;
               }
               System.Windows.Forms.Application.DoEvents();
           }
           worksheet.Columns.EntireColumn.AutoFit();//列宽自适应
           if (saveFileName != "")
           {
               try
               {
                   workbook.Saved = true;
                   workbook.SaveCopyAs(saveFileName);
               }
               catch (Exception ex)
               {
                   MessageBox.Show("导出文件时出错,文件可能正被打开! " + ex.Message);
               }
           }
           xlApp.Quit();
           GC.Collect();//强行销毁
           MessageBox.Show("文件: " + fileName + ".xls 保存成功""信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
       }

     点击按钮调用

    1
    2
    3
    4
    5
    private void button1_Click(object sender, EventArgs e)
    {
        string a = "D:" "\KKHMD.xls";
        ExportExcels(a, dataGridView1);
    }

      完成截图

  • 相关阅读:
    介绍一个axios调试好用的工具:axios-mock-adapter
    Promise使用时应注意的问题
    如何把js的代码写的更加容易维护(一)--面向对象编程
    一个简单的javascript节流器实现
    使用gulp和bable实现实时编译ES6代码
    javascript闭包的使用--按钮切换
    js求数组的最大值--奇技淫巧和笨方法
    Canvas绘图优化之使用位图--基于createjs库
    通过chrome浏览器分析网页加载时间
    阿里云ECS服务器折腾记(一):小白入门遇到的各类问题
  • 原文地址:https://www.cnblogs.com/baimangguo/p/10434740.html
Copyright © 2020-2023  润新知