zoukankan      html  css  js  c++  java
  • DaGridView导出Excel

    首先添加引用Microsoft.Office.Interop.Excel;

            /// <summary>
            /// 将dataGridView导出Excel
            /// </summary>
            /// <param name="dataGridView">dataGridView</param>
            /// <returns>返回是否导出成功,成功返回True,失败返回False</returns>
            public bool ExportExcel(DataGridView dataGridView)
            {
                SaveFileDialog saveDialog = new SaveFileDialog();
                saveDialog.Filter = "Excel files(*.xls)|*.xls";
                saveDialog.FilterIndex = 0;
                saveDialog.RestoreDirectory = true;
                saveDialog.CreatePrompt = true;

                bool fileSaved = false;

                if (saveDialog.ShowDialog() == DialogResult.OK)
                {
                    if (dataGridView == null)
                    {
                        return false;
                    }

                    Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();

                    if (xlApp == null)
                    {
                        return false;
                    }

                    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];

                    for (int i = 0; i < dataGridView.Columns.Count; i++)
                    {
                        worksheet.Cells[1, i + 1] = dataGridView.Columns[i].HeaderText;
                    }

                    for (int r = 0; r < dataGridView.Rows.Count; r++)
                    {
                        for (int i = 0; i < dataGridView.Columns.Count; i++)
                        {
                            worksheet.Cells[r + 2, i + 1] = dataGridView.Rows[r].Cells[i].Value.ToString();
                        }
                    }

                    try
                    {
                        workbook.Saved = true;
                        workbook.SaveCopyAs(saveDialog.FileName);
                        fileSaved = true;
                    }
                    catch (Exception)
                    {
                        fileSaved = false;
                    }

                    if (worksheet != null)
                    {
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
                        worksheet = null;
                    }
                    if (workbook != null)
                    {
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
                        workbook = null;
                    }
                    if (workbooks != null)
                    {
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);
                        workbooks = null;
                    }
                    xlApp.Application.Workbooks.Close();
                    xlApp.Quit();
                    if (xlApp != null)
                    {
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
                        xlApp = null;
                    }
                    GC.Collect();
                }
                return fileSaved;
            }

  • 相关阅读:
    Ubuntu下虚拟机卡顿
    C函数重载
    ACPI电源状态定义
    /dev/random生成随机数慢的问题
    GCC强制静态库链接未使用的函数、变量
    cmake交叉编译问题
    cmake语法
    CentOS安装OpenOCD
    LOJ3119. 「CTS2019 | CTSC2019」随机立方体 二项式反演
    BZOJ4710 [Jsoi2011]分特产 容斥
  • 原文地址:https://www.cnblogs.com/rumeng/p/2750792.html
Copyright © 2011-2022 走看看