数据库中数据导出到Excel文件中

本文介绍了一种使用C#从数据库读取数据并将其导出到Excel的方法。通过创建Excel对象并填充数据,实现了数据的自动格式化及适配。文章详细展示了如何利用DataTable对象获取数据,并将这些数据写入Excel单元格。

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

导出Excel文件

2009年4月29日21:59:30
        private void btnOutputExcel_Click(object sender, EventArgs e)
        {
            //一个Excel的应用类的实例声明
            ApplicationClass myExcel;
            //工作薄声明
            Workbooks myWorkBooks;
            //一个工作薄
            Workbook myWorkBook;
            //一个工作表
            Worksheet myWorkSheet;
            char myColumns;
            //用WorkSheet对象返回一个Range对象,该对象代表:能在受保护的工作表中进行编辑的区域的子集
            Range myRange;
            Object[,] myData = new Object[5000, 30];
            System.Data.DataTable myReader;
            int count, i, j;
            try
            {
                //生成一个Excel对象实例
                myExcel = new ApplicationClass();
                //设置Excel的可见
                myExcel.Visible = true;
                if (myExcel == null)
                {
                    MessageBox.Show("Excel程序无法启动!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                //使用dataReader获取执行sql语句后的数据
                myReader = db.selectStudentByMaster(masterID).Tables["selectStudentByMaster"];
                //由Excel对象得到工作薄集合
                myWorkBooks = myExcel.Workbooks;
                //得到一个工作薄
                myWorkBook = myWorkBooks.Add(Missing.Value);
                //得到工作薄中一个工作表
                myWorkSheet = (Worksheet)myWorkBook.Worksheets[1];
                //得到数据集的表中列的个数
                myColumns = (char)(myReader.Columns.Count + 64);


                //用WorkSheet对象返回一个Range对象,该对象代表:能在受保护的工作表中进行编辑的区域的子集
                //参数1:表示区域名,必须为A1样式引用的宏语言
                //参数2:表示区域左上角到右下角的单元格
                myRange = myWorkSheet.get_Range("A1", myColumns.ToString() + "1");
               
                //count为计算列数
                count = 0;
                //得到数据集中的表中的每一列的标题,然后放置到二维的对象数组中
                foreach (DataColumn myNewColumn in myReader.Columns)
                {
                    myData[0, count] = myNewColumn.ColumnName;
                    count++;
                }
                //设标题为黑体字
                myWorkSheet.get_Range(myWorkSheet.Cells[1, 1], myWorkSheet.Cells[1, count]).Font.Name = "黑体";
                //标题字体加粗
                myWorkSheet.get_Range(myWorkSheet.Cells[1, 1], myWorkSheet.Cells[1, count]).Font.Bold = true;
                //设计表格边框样式
                myWorkSheet.get_Range(myWorkSheet.Cells[1, 1], myWorkSheet.Cells[1, count]).Borders.LineStyle = 1;
                j = 0;
                //双重循环来设置对象数组中数据(相当于表中单元格数据)
                while (j < myReader.Rows.Count)
                {
                    for (i = 0; i < myReader.Columns.Count; i++)
                    {
                        myData[j+1, i] = myReader.Rows[j][i].ToString();
                    }
                    j++;
                }
                //关闭读取器
                //myReader.Close();
                //重新设定范围
                myRange = myRange.get_Resize(myReader.Rows.Count, myReader.Columns.Count);
                //设定Excel范围的编辑数据源
                myRange.Value2 = myData;
                //自动适应大小
                myRange.EntireColumn.AutoFit();
                this.btnOutputExcel.Visible = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值