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

导出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);
            }
        }

原文地址:https://www.cnblogs.com/gaojun/p/1446558.html