C#使用oledb操作excel文件的方法
本文實(shí)例講述了C#使用oledb操作excel文件的方法。分享給大家供大家參考。具體分析如下:
不管什么編程語(yǔ)言都會(huì)提供操作Excel文件的方式,C#操作Excel主要有以下幾種方式:
1.Excel
說(shuō)明:利用Office 的Excel組件來(lái)操作excel文件
優(yōu)點(diǎn):能夠完全操作Excel文件,生成豐富文件內(nèi)容
缺點(diǎn):需要電腦安裝Excel,會(huì)啟動(dòng)Excel進(jìn)程這在web上很不方便
2.OpenXML
說(shuō)明:一個(gè)操作字處理文檔的組件包括Excel
優(yōu)點(diǎn):能夠操作操作Excel2007版本文件
缺點(diǎn):只能夠操作Excel2007文件
3.NPOI
說(shuō)明:一個(gè)開(kāi)源的Excel讀寫(xiě)庫(kù)
優(yōu)點(diǎn):不需要安裝Excel
缺點(diǎn):只能夠操作Excel2003文檔,對(duì)文檔內(nèi)容控制不完全
4.OleDb
說(shuō)明:使用Microsoft Jet 提供程序用于連接到 Excel 工作簿,將Excel文件作為數(shù)據(jù)源來(lái)讀寫(xiě)
優(yōu)點(diǎn):簡(jiǎn)單快速,能夠操作高版本Excel
缺點(diǎn):只能夠進(jìn)行有限的操作(讀、寫(xiě))
今天學(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:表示提供程序名稱(chēng)
Data Source:這里填寫(xiě)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類(lèi)(實(shí)現(xiàn)了IDisposable,要using)
using (OleDbConnection ole_conn = new OleDbConnection(sConnectionString))
{
ole_conn.Open();
using (OleDbCommand ole_cmd = ole_conn.CreateCommand())
{
//類(lèi)似SQL的查詢(xún)語(yǔ)句這個(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]["商家名稱(chēng)"].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類(lèi)(實(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.寫(xiě)入數(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類(lèi)(實(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$](商戶(hù)ID,商家名稱(chēng))values('DJ001','點(diǎn)擊科技')";
ole_cmd.ExecuteNonQuery();
MessageBox.Show("數(shù)據(jù)插入成功......");
}
}
}
4.創(chuàng)建Excel文件并寫(xiě)入數(shù)據(jù)
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=d:\\excel1.xls;" +
"Extended Properties=Excel 8.0;";
//實(shí)例化一個(gè)Oledbconnection類(lèi)(實(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文件成功并寫(xiě)入一條數(shù)據(jù)......");
}
}
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
- c#將Excel數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)的實(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)文章
基于Unity實(shí)現(xiàn)2D邊緣檢測(cè)
這篇文章主要介紹了如何利用Unity實(shí)現(xiàn)2D邊緣檢測(cè),從而達(dá)到人物描邊效果。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-04-04
C#實(shí)現(xiàn)向數(shù)組指定索引位置插入新的元素值
這篇文章給大家介紹了利用C#實(shí)現(xiàn)向數(shù)組指定索引位置插入新的元素值,首先需要定義一個(gè)一維數(shù)組,然后修改數(shù)組的長(zhǎng)度,從而在其中增加一個(gè)元素,需要的朋友可以參考下2024-02-02
C#設(shè)計(jì)模式之Observer觀察者模式解決牛頓童鞋成績(jī)問(wèn)題示例
這篇文章主要介紹了C#設(shè)計(jì)模式之Observer觀察者模式解決牛頓童鞋成績(jī)問(wèn)題,簡(jiǎn)單講述了觀察者模式的原理并結(jié)合具體實(shí)例形式分析了使用觀察者模式解決牛頓童鞋成績(jī)問(wèn)題的具體步驟相關(guān)操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-09-09
winform 實(shí)現(xiàn)選擇文件和選擇文件夾對(duì)話框的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇winform 實(shí)現(xiàn)選擇文件和選擇文件夾對(duì)話框的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01

