C 创建Excel文件并将数据导出到Excel文件

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               
工具原料:

Windows 7,Visual Studio 2010, Microsoft Office 2007

创建解决方案

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


添加相关组件:

添加两个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);
源码下载:http://download.csdn.net/detail/testcs_dn/7328685

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值