C#导出数据库表至Excel中

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_32832727/article/details/53932220


添加Microsoft.Office.Interop.Excel引用



写代码时,可能会报这个错:无法嵌入互操作类型 请改用适用的接口。那就要将嵌入互操作类型的值改为False。




一个例子的完整代码


using System;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
using System.Data.SqlClient;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //保存文件对话框
            SaveFileDialog sfd = new SaveFileDialog();
            sfd.Filter = "Excel文件|*.xlsx|Word文件|*.docx";
            sfd.FilterIndex = 0;
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                //连接数据库,查询数据
                using (SqlConnection conn = new SqlConnection(@"server=pc;database=Mytest;trusted_connection=true"))
                {
                    using (SqlDataAdapter sda = new SqlDataAdapter("select * from Table_2", conn))
                    {
                        using (System.Data.DataTable dt = new System.Data.DataTable())
                        {
                            //将数据库中查到的数据填充到DataTable数据表
                            sda.Fill(dt);
                            //调用导出Excel的方法,传入DataTable数据表和路径
                            ExportExcel(dt, sfd.FileName);
                        }
                    }
                }
            }
        }
        void ExportExcel(System.Data.DataTable dt, string filepath)
        {
            //创建Excel应用程序类的一个实例,相当于从电脑开始菜单打开Excel
            ApplicationClass xlsxapp = new ApplicationClass();
            //新建一张Excel工作簿
            Workbook wbook = xlsxapp.Workbooks.Add(true);
            //第一个sheet页
            Worksheet wsheet = (Worksheet)wbook.Worksheets.get_Item(1);
            //将DataTable的列名显示在Excel表第一行
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                //注意Excel表的行和列的索引都是从1开始的
                wsheet.Cells[1, i + 1] = dt.Columns[i].ColumnName;
            }
            //遍历DataTable,给Excel赋值
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    //从第二行第一列开始写入数据
                    wsheet.Cells[i + 2, j + 1] = dt.Rows[i][j];
                }
            }
            //保存文件
            wbook.SaveAs(filepath);
            //释放资源
            xlsxapp.Quit();
        }
    }
}

获取Excel、DataTable、DataGridView表中单元格值的方式

//Excel(行和列的索引是从1开始,不是从0开始)
值=xxx.Cells[行,列]

//DataTable
值=xxx.Rows[行][列]

//DataGridView
值=xxx.Rows[行].Cells[列].Value



猜你喜欢

转载自blog.csdn.net/sinat_32832727/article/details/53932220