• 技术文章 >后端开发 >C#.Net教程

    C#创建Excel文件并将数据导出到Excel文件的示例代码详解(图)

    黄舟黄舟2017-03-13 17:47:16原创1451

    工具原料:

    Windows 7,Visual Studio 2010, Microsoft Office 2007

    创建解决方案

    菜单》新建》项目》Windows窗体应用程序:

    php入门到就业线上直播课:进入学习


    添加相关组件:

    添加两个DataGridView,一个TextBox,两个按钮 ,如下图:


    添加Excel资源:

    C#创建Excel文件,这里实际上是从资源中提取一个事先创建好的Excel文件,文件提取成功后,使用OleDb方法连接Excel,向Excel文件中写入数据。

    先在文件夹中新建一个Excel文件,在Sheet1表的第一行设置列名:


    双击“Resources.resx”文件打开资源文件视图:


    添加现有文件,选择刚刚创建的Excel文件


    从资源中提取Excel文件

                string excelPath = AppDomain.CurrentDomain.BaseDirectory + "Excel" + DateTime.Now.Ticks + ".xlsx";
                if (System.IO.File.Exists(excelPath))
                {
                    textBox1.Text += ("文件已经存在!");
                    return;
                }
    
                try
                {
                    //从资源中提取Excel文件
                    System.IO.FileStream fs = new System.IO.FileStream(excelPath, FileMode.OpenOrCreate);
                    fs.SetLength(0);
                    fs.Write(Properties.Resources.Excel, 0, Properties.Resources.Excel.Length);
                    fs.Close();
                    fs.Dispose();
                    textBox1.Text = "提取Excel文件成功!" + "\r\n";
                }
                catch (System.Exception ex)
                {
                    excelPath = string.Empty;
                    textBox1.Text += ("提取Excel文件失败:" + ex.Message);
                    textBox1.Text += ("\r\n");
                    Application.DoEvents();
                    return;
                }

    定义连接字符串

    //定义OleDB连接字符串
                string strConn = "Provider=Microsoft.Ace.OleDb.12.0;Persist Security Info=False;" + "data source=" + @excelPath + ";
                Extended Properties='Excel 12.0; HDR=yes; IMEX=10'";
                OleDbConnection conn = new OleDbConnection();
                conn.ConnectionString = strConn;

    注意:连接字符串中IMEX的值使用的是10,如果是1或2,在执行Insert Into语句时就会报“操作必须使用一个可更新的查询”的错误。

    在dataGridView1中显示Excel文件中的所有表的信息

                    DataTable oleDt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    dataGridView1.DataSource = oleDt;
                    dataGridView1.Show();

    向"Sheet1"表中插入几条数据,访问Excel的表的时候需要在表名后添加"$"符号,Insert语句可以不指定列名

                    OleDbCommand cmd = null;
                    try
                    {
                        //向"Sheet1"表中插入几条数据,访问Excel的表的时候需要在表名后添加"$"符号,Insert语句可以不指定列名
                        cmd = new OleDbCommand("Insert Into [Sheet1$] Values('abc', 'bac', '0', '123456', 'test','测试','aa')", conn);//(A,B,C,D,E,F,G) 
                        cmd.ExecuteNonQuery();
                        cmd.ExecuteNonQuery();
                        cmd.ExecuteNonQuery();
                        cmd.ExecuteNonQuery();
                        cmd.ExecuteNonQuery();
                    }
                    catch (System.Exception ex)
                    {
                        textBox1.Text += ("插入数据失败:" + ex.Message);
                        textBox1.Text += ("\r\n");
                    }

    在dataGridView2中显示表"Sheet1"的内容,访问Excel的表的时候需要在表名后添加"$"符号

                    cmd = new OleDbCommand("Select * From [Sheet1$]", conn);
                    OleDbDataAdapter adp = new OleDbDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    adp.Fill(ds);
                    dataGridView2.DataSource = ds.Tables[0];

    遍历Schema的内容

                    DataTable dt = conn.GetSchema();
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        textBox1.Text += dt.Columns[i].Caption;
                        if (i + 1 < dt.Columns.Count)
                        {
                            textBox1.Text += ",";
                        }
                    }
    
                    for (int j = 0; j < dt.Rows.Count; j++)
                    {
                        for (int i = 0; i < dt.Columns.Count; i++)
                        {
                            if (dt.Rows[j][dt.Columns[i]] != null)
                            {
                                textBox1.Text += dt.Rows[j][dt.Columns[i]].ToString();
                            }
                            else
                            {
                                textBox1.Text += "null";
                            }
    
                            if (i + 1 < dt.Columns.Count)
                            {
                                textBox1.Text += ",";
                            }
                        }
                        textBox1.Text += ("\r\n");
                    }

    关闭Excel数据连接

                    if (conn.State != ConnectionState.Closed)
                    {
                        try
                        {
                            conn.Close();
                        }
                        catch (System.Exception ex)
                        {
                            textBox1.Text += ("关闭Excel数据连接:" + ex.Message);
                            textBox1.Text += ("\r\n");
                        }
                    }

    打开文件目录

    System.Diagnostics.Process.Start("explorer.exe", AppDomain.CurrentDomain.BaseDirectory);

    以上就是C#创建Excel文件并将数据导出到Excel文件的示例代码详解(图)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:C#,Excel,导出
    上一篇:C#修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限的具体代码介绍 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• c语言中源文件编译后生成什么文件• c语言标识符有哪些类型• C#中GDI+编程10个基本技巧二• ASP.NET使用Ajax如何返回Json对象的方法具体介绍• 应用绝对路径与相对路径
    1/1

    PHP中文网