C#使用oledb操作excel文件的方法
本文實例講述了C#使用oledb操作excel文件的方法。分享給大家供大家參考。具體分析如下:
不管什么編程語言都會提供操作Excel文件的方式,C#操作Excel主要有以下幾種方式:
1.Excel
說明:利用Office 的Excel組件來操作excel文件
優(yōu)點:能夠完全操作Excel文件,生成豐富文件內(nèi)容
缺點:需要電腦安裝Excel,會啟動Excel進(jìn)程這在web上很不方便
2.OpenXML
說明:一個操作字處理文檔的組件包括Excel
優(yōu)點:能夠操作操作Excel2007版本文件
缺點:只能夠操作Excel2007文件
3.NPOI
說明:一個開源的Excel讀寫庫
優(yōu)點:不需要安裝Excel
缺點:只能夠操作Excel2003文檔,對文檔內(nèi)容控制不完全
4.OleDb
說明:使用Microsoft Jet 提供程序用于連接到 Excel 工作簿,將Excel文件作為數(shù)據(jù)源來讀寫
優(yōu)點:簡單快速,能夠操作高版本Excel
缺點:只能夠進(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 針對Excel2000及以上版本,Excel5.0 針對Excel97。
HDR=Yes 表示第一行包含列名,在計算行數(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'";
//實例化一個Oledbconnection類(實現(xiàn)了IDisposable,要using)
using (OleDbConnection ole_conn = new OleDbConnection(sConnectionString))
{
ole_conn.Open();
using (OleDbCommand ole_cmd = ole_conn.CreateCommand())
{
//類似SQL的查詢語句這個[Sheet1$對應(yīng)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.獲取工作簿中所有的工作表
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類(實現(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;";
//實例化一個Oledbconnection類(實現(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','點擊科技')";
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;";
//實例化一個Oledbconnection類(實現(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','點擊科技')";
ole_cmd.ExecuteNonQuery();
MessageBox.Show("生成Excel文件成功并寫入一條數(shù)據(jù)......");
}
}
希望本文所述對大家的C#程序設(shè)計有所幫助。
- c#將Excel數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫的實現(xiàn)代碼
- ASP.NET(C#)讀取Excel的文件內(nèi)容
- C#實現(xiàn)將DataTable內(nèi)容輸出到Excel表格的方法
- C#導(dǎo)入導(dǎo)出EXCEL文件的代碼實例
- 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實例
- c#利用Excel直接讀取數(shù)據(jù)到DataGridView
- C#在Excel表格中插入、編輯和刪除批注
相關(guān)文章
C#遞歸實現(xiàn)顯示文件夾及所有文件并計算其大小的方法
這篇文章主要介紹了C#遞歸實現(xiàn)顯示文件夾及所有文件并計算其大小的方法,是遍歷算法中比較典型的一種應(yīng)用,有不錯的學(xué)習(xí)借鑒價值,需要的朋友可以參考下2014-08-08

