c# 将datagridview 生成为excel

本文介绍了一种方法,通过C#代码创建一个Microsoft.Office.Interop.Excel应用程序实例,将DataGridView的数据转换并保存为Excel文件。首先检查数据网格是否为空,然后创建一个新的Excel工作簿,设置标题,合并单元格,并将DataGridView的列标题和数据写入Excel工作表。最后,将Excel文件保存到指定路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

private int ExportExcel(string strCaption, DataGridView myDGV)
        {
            int result = 9999;
            // 列索引,行索引,总列数,总行数
            int ColIndex = 0;
            int RowIndex = 0;
            int ColCount = myDGV.ColumnCount;
            int RowCount = myDGV.RowCount;

            if (myDGV.RowCount == 0)
            {
                result = 1;
            }

            // 创建Excel对象
            Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
            if (xlApp == null)
            {
                result = 2;
            }
            try
            {
                // 创建Excel工作薄
                Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add(true);
                Microsoft.Office.Interop.Excel.Worksheet xlSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.Worksheets[1];
                // 设置标题
                Microsoft.Office.Interop.Excel.Range range = xlSheet.get_Range(xlApp.Cells[1, 1], xlApp.Cells[1, ColCount]); //标题所占的单元格数与DataGridView中的列数相同
                range.MergeCells = true;
                xlApp.ActiveCell.FormulaR1C1 = strCaption;
                xlApp.ActiveCell.Font.Size = 20;
                xlApp.ActiveCell.Font.Bold = true;
                xlApp.ActiveCell.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter;
                // 创建缓存数据
                object[,] objData = new object[RowCount + 1, ColCount];
                //获取列标题
                foreach (DataGridViewColumn col in myDGV.Columns)
                {
                    objData[RowIndex, ColIndex++] = col.HeaderText;
                }
                // 获取数据
                for (RowIndex = 1; RowIndex < RowCount; RowIndex++)
                {
                    for (ColIndex = 0; ColIndex < ColCount; ColIndex++)
                    {
                        if (myDGV[ColIndex, RowIndex - 1].ValueType == typeof(string)
                            || myDGV[ColIndex, RowIndex - 1].ValueType == typeof(DateTime))//这里就是验证DataGridView单元格中的类型,如果是string或是DataTime类型,则在放入缓存时在该内容前加入" ";
                        {
                            objData[RowIndex, ColIndex] = "" + myDGV[ColIndex, RowIndex - 1].Value;
                        }
                        else
                        {
                            objData[RowIndex, ColIndex] = myDGV[ColIndex, RowIndex - 1].Value;
                        }
                    }
                    System.Windows.Forms.Application.DoEvents();
                }
                // 写入Excel
                range = xlSheet.get_Range(xlApp.Cells[2, 1], xlApp.Cells[RowCount, ColCount]);
                range.Value2 = objData;

                //保存
                xlBook.Saved = true;
                xlBook.SaveCopyAs(@"D:/报表" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls");
                //返回值
                result = 0;
            }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值