C#使用oledb操作excel文件的方法
本文實(shí)例講述了C#使用oledb操作excel文件的方法。分享給大家供大家參考。具體分析如下:
不管什么編程語言都會(huì)提供操作Excel文件的方式,C#操作Excel主要有以下幾種方式:
1.Excel
說明:利用Office 的Excel組件來操作excel文件
優(yōu)點(diǎn):能夠完全操作Excel文件,生成豐富文件內(nèi)容
缺點(diǎn):需要電腦安裝Excel,會(huì)啟動(dòng)Excel進(jìn)程這在web上很不方便
2.OpenXML
說明:一個(gè)操作字處理文檔的組件包括Excel
優(yōu)點(diǎn):能夠操作操作Excel2007版本文件
缺點(diǎn):只能夠操作Excel2007文件
3.NPOI
說明:一個(gè)開源的Excel讀寫庫
優(yōu)點(diǎn):不需要安裝Excel
缺點(diǎn):只能夠操作Excel2003文檔,對(duì)文檔內(nèi)容控制不完全
4.OleDb
說明:使用Microsoft Jet 提供程序用于連接到 Excel 工作簿,將Excel文件作為數(shù)據(jù)源來讀寫
優(yōu)點(diǎn):簡單快速,能夠操作高版本Excel
缺點(diǎn):只能夠進(jìn)行有限的操作(讀、寫)
今天學(xué)習(xí)使用OleDb操作Excel文件
連接字符串:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\test.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'
provider:表示提供程序名稱
Data Source:這里填寫Excel文件的路徑
Extended Properties:設(shè)置Excel的特殊屬性
Extended Properties 取值:
Excel 8.0 針對(duì)Excel2000及以上版本,Excel5.0 針對(duì)Excel97。
HDR=Yes 表示第一行包含列名,在計(jì)算行數(shù)時(shí)就不包含第一行
IMEX 0:導(dǎo)入模式,1:導(dǎo)出模式:2混合模式
1.讀取excel文件
if (openFileDialog1.ShowDialog() == DialogResult.OK) { String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source="+openFileDialog1.FileName+";"+ "Extended Properties='Excel 8.0;HDR=Yes;IMEX=2'"; //實(shí)例化一個(gè)Oledbconnection類(實(shí)現(xiàn)了IDisposable,要using) using (OleDbConnection ole_conn = new OleDbConnection(sConnectionString)) { ole_conn.Open(); using (OleDbCommand ole_cmd = ole_conn.CreateCommand()) { //類似SQL的查詢語句這個(gè)[Sheet1$對(duì)應(yīng)Excel文件中的一個(gè)工作表] ole_cmd.CommandText = "select * from [Sheet1$]"; OleDbDataAdapter adapter = new OleDbDataAdapter(ole_cmd); DataSet ds = new DataSet(); adapter.Fill(ds, "Sheet1"); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { MessageBox.Show(ds.Tables[0].Rows[i]["商家名稱"].ToString()); } } } }
2.獲取工作簿中所有的工作表
if (openFileDialog1.ShowDialog() == DialogResult.OK) { String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source="+openFileDialog1.FileName+";"+ "Extended Properties='Excel 8.0;HDR=Yes;IMEX=2'"; //實(shí)例化一個(gè)Oledbconnection類(實(shí)現(xiàn)了IDisposable,要using) using (OleDbConnection ole_conn = new OleDbConnection(sConnectionString)) { ole_conn.Open(); using (OleDbCommand ole_cmd = ole_conn.CreateCommand()) { DataTable tb = ole_conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); foreach (DataRow row in tb.Rows) { MessageBox.Show(row["TABLE_NAME"].ToString()); } } } }
3.寫入數(shù)據(jù)到Excel表
if (openFileDialog1.ShowDialog() == DialogResult.OK) { String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source="+openFileDialog1.FileName+";"+ "Extended Properties=Excel 8.0;"; //實(shí)例化一個(gè)Oledbconnection類(實(shí)現(xiàn)了IDisposable,要using) using (OleDbConnection ole_conn = new OleDbConnection(sConnectionString)) { ole_conn.Open(); using (OleDbCommand ole_cmd = ole_conn.CreateCommand()) { ole_cmd.CommandText = "insert into [Sheet1$](商戶ID,商家名稱)values('DJ001','點(diǎn)擊科技')"; ole_cmd.ExecuteNonQuery(); MessageBox.Show("數(shù)據(jù)插入成功......"); } } }
4.創(chuàng)建Excel文件并寫入數(shù)據(jù)
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=d:\\excel1.xls;" + "Extended Properties=Excel 8.0;"; //實(shí)例化一個(gè)Oledbconnection類(實(shí)現(xiàn)了IDisposable,要using) using (OleDbConnection ole_conn = new OleDbConnection(sConnectionString)) { ole_conn.Open(); using (OleDbCommand ole_cmd = ole_conn.CreateCommand()) { ole_cmd.CommandText = "CREATE TABLE CustomerInfo ([CustomerID] VarChar,[Customer] VarChar)"; ole_cmd.ExecuteNonQuery(); ole_cmd.CommandText = "insert into CustomerInfo(CustomerID,Customer)values('DJ001','點(diǎn)擊科技')"; ole_cmd.ExecuteNonQuery(); MessageBox.Show("生成Excel文件成功并寫入一條數(shù)據(jù)......"); } }
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
- c#將Excel數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫的實(shí)現(xiàn)代碼
- ASP.NET(C#)讀取Excel的文件內(nèi)容
- C#實(shí)現(xiàn)將DataTable內(nèi)容輸出到Excel表格的方法
- C#導(dǎo)入導(dǎo)出EXCEL文件的代碼實(shí)例
- C#數(shù)據(jù)導(dǎo)入/導(dǎo)出Excel文件及winForm導(dǎo)出Execl總結(jié)
- C#如何將DataTable導(dǎo)出到Excel解決方案
- C#讀取Excel的三種方式以及比較分析
- C#將html table 導(dǎo)出成excel實(shí)例
- c#利用Excel直接讀取數(shù)據(jù)到DataGridView
- C#在Excel表格中插入、編輯和刪除批注
相關(guān)文章
C#實(shí)現(xiàn)向數(shù)組指定索引位置插入新的元素值
這篇文章給大家介紹了利用C#實(shí)現(xiàn)向數(shù)組指定索引位置插入新的元素值,首先需要定義一個(gè)一維數(shù)組,然后修改數(shù)組的長度,從而在其中增加一個(gè)元素,需要的朋友可以參考下2024-02-02C#設(shè)計(jì)模式之Observer觀察者模式解決牛頓童鞋成績問題示例
這篇文章主要介紹了C#設(shè)計(jì)模式之Observer觀察者模式解決牛頓童鞋成績問題,簡單講述了觀察者模式的原理并結(jié)合具體實(shí)例形式分析了使用觀察者模式解決牛頓童鞋成績問題的具體步驟相關(guān)操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-09-09winform 實(shí)現(xiàn)選擇文件和選擇文件夾對(duì)話框的簡單實(shí)例
下面小編就為大家?guī)硪黄獁inform 實(shí)現(xiàn)選擇文件和選擇文件夾對(duì)話框的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01