DataGridView导出Excel
阅读原文时间:2024年06月07日阅读:1

将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 <= )  
        {  
            MessageBox.Show("没有数据可供保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);  
            return;  
        }

        //列数必须大于0  
        if (colscount <= )  
        {  
            MessageBox.Show("没有数据可供保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);  
            return;  
        }

        //行数不可以大于65536  
        if (rowscount > )  
        {  
            MessageBox.Show("数据记录数太多(最多不能超过65536条),不能保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);  
            return;  
        }

        //列数不可以大于255  
        if (colscount > )  
        {  
            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 = ;  
            for (int i = ; i <= dgv.ColumnCount - ; i++)  
            {  
                if (dgv.Columns\[i\].Visible == true)  
                {  
                    objExcel.Cells\[, 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 = ; row <= dgv.RowCount - ; row++)  
            {  
                //tempProgressBar.PerformStep();    

                displayColumnsCount = ;  
                for (int col = ; col < colscount; col++)  
                {  
                    if (dgv.Columns\[col\].Visible == true)  
                    {  
                        try  
                        {  
                            objExcel.Cells\[row + , 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 + "\\n\\n导出完毕! ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);

    }  

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

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

效果图:

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章