天天看點

C#使用oledb操作excel檔案的方法

本文執行個體講述了C#使用oledb操作excel檔案的方法。分享給大家供大家參考。具體分析如下:

不管什麼程式設計語言都會提供操作Excel檔案的方式,C#操作Excel主要有以下幾種方式:

1.Excel

說明:利用Office 的Excel元件來操作excel檔案

優點:能夠完全操作Excel檔案,生成豐富檔案内容

缺點:需要電腦安裝Excel,會啟動Excel程序這在web上很不友善

2.OpenXML

說明:一個操作字處理文檔的元件包括Excel

優點:能夠操作操作Excel2007版本檔案

缺點:隻能夠操作Excel2007檔案

3.NPOI

說明:一個開源的Excel讀寫庫

優點:不需要安裝Excel

缺點:隻能夠操作Excel2003文檔,對文檔内容控制不完全

4.OleDb

說明:使用Microsoft Jet 提供程式用于連接配接到 Excel 工作簿,将Excel檔案作為資料源來讀寫

優點:簡單快速,能夠操作高版本Excel

缺點:隻能夠進行有限的操作(讀、寫)

今天學習使用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:設定Excel的特殊屬性

Extended Properties 取值:

Excel 8.0 針對Excel2000及以上版本,Excel5.0 針對Excel97。

HDR=Yes 表示第一行包含列名,在計算行數時就不包含第一行

IMEX 0:導入模式,1:導出模式:2混合模式

1.讀取excel檔案

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

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'"

;

//執行個體化一個Oledbconnection類(實作了IDisposable,要using)

using

(OleDbConnection ole_conn =

new

OleDbConnection(sConnectionString))

{

ole_conn.Open();

using

(OleDbCommand ole_cmd = ole_conn.CreateCommand())

{

//類似SQL的查詢語句這個[Sheet1$對應Excel檔案中的一個工作表]

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.擷取工作簿中所有的工作表

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

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'"

;

//執行個體化一個Oledbconnection類(實作了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.寫入資料到Excel表

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

if

(openFileDialog1.ShowDialog() == DialogResult.OK)

{

String sConnectionString =

"Provider=Microsoft.Jet.OLEDB.4.0;"

+

"Data Source="

+openFileDialog1.FileName+

";"

+

"Extended Properties=Excel 8.0;"

;

//執行個體化一個Oledbconnection類(實作了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','點選科技')"

;

ole_cmd.ExecuteNonQuery();

MessageBox.Show(

"資料插入成功......"

);

}

}

}

4.建立Excel檔案并寫入資料

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

String sConnectionString =

"Provider=Microsoft.Jet.OLEDB.4.0;"

+

"Data Source=d:\\excel1.xls;"

+

"Extended Properties=Excel 8.0;"

;

//執行個體化一個Oledbconnection類(實作了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','點選科技')"

;

ole_cmd.ExecuteNonQuery();

MessageBox.Show(

"生成Excel檔案成功并寫入一條資料......"

);

}

}

希望本文所述對大家的C#程式設計有所幫助。

轉載于:https://www.cnblogs.com/StivenYang/p/8441283.html

c#