东西质料:
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);
以上就是C#建立Excel文件并将数据导出到Excel文件的示例代码详解(图)的细致内容,更多请关注ki4网别的相干文章!