zoukankan      html  css  js  c++  java
  • DataGridView导出Excel ,比较实用的代码

      将DataGridView里面的数据,导出到表格里面去。

       首先,需要添加三个引用

    直接在解决方案里,右键添加引用,找到路径即可。然后再把这三个文件复制到项目的根目录下。

    然后定义导出表格的函数:

    复制代码
        public static void DataGridViewToExcel(DataGridView dgv)
            {
    
    
                #region   验证可操作性
    
                //申明保存对话框    
                SaveFileDialog dlg = new SaveFileDialog();
                //默然文件后缀    
                dlg.DefaultExt = "xls ";
                //文件后缀列表    
                dlg.Filter = "EXCEL文件(*.XLS)|*.xls ";
                //默然路径是系统当前路径    
                dlg.InitialDirectory = Directory.GetCurrentDirectory();
                //打开保存对话框    
                if (dlg.ShowDialog() == DialogResult.Cancel) return;
                //返回文件路径    
                string fileNameString = dlg.FileName;
                //验证strFileName是否为空或值无效    
                if (fileNameString.Trim() == " ")
                { return; }
                //定义表格内数据的行数和列数    
                int rowscount = dgv.Rows.Count;
                int colscount = dgv.Columns.Count;
                //行数必须大于0    
                if (rowscount <= 0)
                {
                    MessageBox.Show("没有数据可供保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
    
                //列数必须大于0    
                if (colscount <= 0)
                {
                    MessageBox.Show("没有数据可供保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
    
                //行数不可以大于65536    
                if (rowscount > 65536)
                {
                    MessageBox.Show("数据记录数太多(最多不能超过65536条),不能保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
    
                //列数不可以大于255    
                if (colscount > 255)
                {
                    MessageBox.Show("数据记录行数太多,不能保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
    
                //验证以fileNameString命名的文件是否存在,如果存在删除它    
                FileInfo file = new FileInfo(fileNameString);
                if (file.Exists)
                {
                    try
                    {
                        file.Delete();
                    }
                    catch (Exception error)
                    {
                        MessageBox.Show(error.Message, "删除失败 ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }
                }
                #endregion
                Excel.Application objExcel = null;
                Excel.Workbook objWorkbook = null;
                Excel.Worksheet objsheet = null;
                try
                {
                    //申明对象    
                    objExcel = new Excel.Application();
                    objWorkbook = objExcel.Workbooks.Add(Missing.Value);
                    objsheet = (Excel.Worksheet)objWorkbook.ActiveSheet;
                    //设置EXCEL不可见    
                    objExcel.Visible = false;
    
                    //向Excel中写入表格的表头    
                    int displayColumnsCount = 1;
                    for (int i = 0; i <= dgv.ColumnCount - 1; i++)
                    {
                        if (dgv.Columns[i].Visible == true)
                        {
                            objExcel.Cells[1, displayColumnsCount] = dgv.Columns[i].HeaderText.Trim();
                            displayColumnsCount++;
                        }
                    }
                    //设置进度条    
                    //tempProgressBar.Refresh();    
                    //tempProgressBar.Visible   =   true;    
                    //tempProgressBar.Minimum=1;    
                    //tempProgressBar.Maximum=dgv.RowCount;    
                    //tempProgressBar.Step=1;    
                    //向Excel中逐行逐列写入表格中的数据    
                    for (int row = 0; row <= dgv.RowCount - 1; row++)
                    {
                        //tempProgressBar.PerformStep();    
    
                        displayColumnsCount = 1;
                        for (int col = 0; col < colscount; col++)
                        {
                            if (dgv.Columns[col].Visible == true)
                            {
                                try
                                {
                                    objExcel.Cells[row + 2, displayColumnsCount] = dgv.Rows[row].Cells[col].Value.ToString().Trim();
                                    displayColumnsCount++;
                                }
                                catch (Exception)
                                {
    
                                }
    
                            }
                        }
                    }
                    //隐藏进度条    
                    //tempProgressBar.Visible   =   false;    
                    //保存文件    
                    objWorkbook.SaveAs(fileNameString, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                            Missing.Value, Excel.XlSaveAsAccessMode.xlShared, Missing.Value, Missing.Value, Missing.Value,
                            Missing.Value, Missing.Value);
                }
                catch (Exception error)
                {
                    MessageBox.Show(error.Message, "警告 ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                finally
                {
                    //关闭Excel应用    
                    if (objWorkbook != null) objWorkbook.Close(Missing.Value, Missing.Value, Missing.Value);
                    if (objExcel.Workbooks != null) objExcel.Workbooks.Close();
                    if (objExcel != null) objExcel.Quit();
    
                    objsheet = null;
                    objWorkbook = null;
                    objExcel = null;
                }
                MessageBox.Show(fileNameString + "
    
    导出完毕! ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
    
            }  
    复制代码

    想导出表格的话,直接触发函数就行了,把datagridview扔进去。

      private void button1_Click(object sender, EventArgs e) //导出表格
                   {
                       DataGridViewToExcel(dataGridView1);
                   }

    效果图:

     
     
  • 相关阅读:
    Codeforces Round #344 (Div. 2) C. Report 其他
    Codeforces Round #344 (Div. 2) B. Print Check 水题
    Codeforces Round #344 (Div. 2) A. Interview 水题
    8VC Venture Cup 2016
    CDOJ 1280 772002画马尾 每周一题 div1 矩阵快速幂 中二版
    CDOJ 1280 772002画马尾 每周一题 div1 矩阵快速幂
    CDOJ 1279 班委选举 每周一题 div2 暴力
    每周算法讲堂 快速幂
    8VC Venture Cup 2016
    Educational Codeforces Round 9 F. Magic Matrix 最小生成树
  • 原文地址:https://www.cnblogs.com/275147378abc/p/4682972.html
Copyright © 2011-2022 走看看