當前位置:編程學習大全網 - 源碼下載 - excel格式文件怎麽導入至mdb文件?

excel格式文件怎麽導入至mdb文件?

思路很簡單,就是先依次獲取Excel中表的表名,然後再將Excel表的數據導入到內存以DataTable格式存在,最後再把dataTable數據導入到Mdb數據庫文件中。最後實現的功能可以使Excel多表進行導入,如果Mdb數據庫文件中已有新建的表,操作是先刪除數據庫中的已存在表,再重新創建表,導數據。

源碼:

using?System;using?System.Collections.Generic;using?System.ComponentModel;using?System.Data;using?System.Drawing;using?System.Linq;using?System.Text;using?System.Threading.Tasks;using?System.Windows.Forms;using?System.Data.OleDb;

namespace?TestK

{

public?partial?class?Form1?:?Form{

public?Form1()

{

InitializeComponent();

}

public?int?tableNameNum?=?0;//記錄Excel中所有表的數量public?OleDbConnection?connection?=?new?OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data?Source=C:\\Users\\CES\\Desktop\\CES.mdb");

//建立與數據庫文件CES.mdb的連接

//打開以.xls或者.xlsx結尾的文件private?void?button1_Click(object?sender,?EventArgs?e)

{

OpenFileDialog?dlg?=?new?OpenFileDialog();//創建窗體dlg.Filter?=?"Excel文件?(*.xls;*.xlsx)|*.xls;*.xlsx";//瀏覽過濾出以.xls或者.xlsx結尾的文件if(dlg.ShowDialog()?==?DialogResult.OK)

{

string?filePath?=?dlg.FileName;?//獲取打開文件的路徑this.textBox1.Text?=?filePath;

}

}

//獲取Excel中所有表的表名public?string[]?GetTableName(string?excelFilename)

{

//建立與指定Excel文件的連接string?connectionString?=?string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data?Source={0};Jet?OLEDB:Engine?Type=35;Extended?Properties=Excel?8.0;Persist?Security?Info=False",?excelFilename);

string[]?tableName?=?new?string[20];?//存儲Excel中所有表的表名string?temp;?//中間變量

using?(System.Data.OleDb.OleDbConnection?connection?=?new?System.Data.OleDb.OleDbConnection(connectionString))

{

connection.Open();

//獲取數據庫架構信息,包括列、主鍵、表等信息DataTable?table?=?connection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,?null);

for?(int?i?=?0;?i?<?table.Rows.Count;i++?)

{

temp?=?table.Rows[i]["Table_Name"].ToString();?//獲取Excel中的表名tableName[i]?=?temp.Replace("$",?"");//因為獲取的表名最後會有$符號,所以要替換}

tableNameNum?=?table.Rows.Count;

connection.Close();

}

return?tableName;

}

//獲取Excel中每張表的數據,以datatable類型返回public?DataTable?GetExcelTable(string?excelFilename,string?tableName)

{

//建立與指定Excel文件的連接string?connectionString?=?string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data?Source={0};Jet?OLEDB:Engine?Type=35;Extended?Properties=Excel?8.0;Persist?Security?Info=False",?excelFilename);

DataSet?ds?=?new?DataSet();?//數據集//using中聲明的對象connection,在using語句塊結束後會自動釋放using?(System.Data.OleDb.OleDbConnection?connection?=?new?System.Data.OleDb.OleDbConnection(connectionString))

{

connection.Open();

//獲取數據庫架構信息,包括列、主鍵、表等信息DataTable?table?=?connection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,?null);

string?strExcel?=?"select?*?from?"?+?"["?+?tableName?+?"$]";

//打開數據鏈接,得到壹個數據集OleDbDataAdapter?adapter?=?new?OleDbDataAdapter(strExcel,?connectionString);

//在數據集中查詢表名為tableName的表,然後把其數據在裝入數據集ds中adapter.Fill(ds,?tableName);

connection.Close();

}

return?ds.Tables[tableName];//以datatable類型返回數據集ds中表名為tableName的表}

//判斷在數據庫中,指定表名的表是否存在public?bool?TableExists(string?table)

{

bool?rythm;

connection.Open();

//讀取表名為table的表的行數信息rythm?=?connection.GetSchema("Tables",?new?string[4]?{?null,?null,?table,?"TABLE"?}).Rows.Count?>?0;

connection.Close();

return?rythm;

}

//如果在建表之前,數據庫已經存在該表,那麽首先要先刪除此表public?void?DeleteTable(string?tableName)

{

string?sql?=?"drop?table?"+tableName+";";

connection.Open();

OleDbCommand?cmd?=?new?OleDbCommand(sql,?connection);

cmd.ExecuteNonQuery();

connection.Close();

}

//中間類型為dataTable的表數據轉換到數據庫mdb文件中public?bool?dataTableToMdb(string?excelPath,string?tableName)

{

//獲取Excel中表的數據DataTable?dt?=?GetExcelTable(excelPath,tableName);

//表中數據大於等於兩行,數據轉入格式才是正確的if?(dt.Rows.Count?>=?2)

{

string[]?cloumnName?=?new?string[50];

//獲取Excel中表的所有列名for?(int?i?=?0;?i?<?dt.Columns.Count;?i++)

{

cloumnName[i]?=?dt.Rows[0][i].ToString();

}

//在mdb數據庫文件中創建表string?sql?=?"create?table?"?+?tableName?+?"?("?+?cloumnName[0]?+?"?varchar?null)";

connection.Open();

OleDbCommand?cmd?=?new?OleDbCommand(sql,?connection);

cmd.ExecuteNonQuery();

//在mdb數據庫文件中,給已創建好的表添加好所有列for?(int?i?=?1;?i?<?dt.Columns.Count;?i++)

{

sql?=?"alter?table?"?+?tableName?+?"?add?"?+?cloumnName[i]?+?"?varchar?null";

cmd?=?new?OleDbCommand(sql,?connection);

cmd.ExecuteNonQuery();

}

//在mdb數據庫文件中,給已創建好的表加入數據for?(int?t?=?1;?t?<?dt.Rows.Count;?t++)

{

sql?=?"insert?into?"?+?tableName?+?"?values('";

for?(int?k?=?0;?k?<?dt.Columns.Count;?k++)

{

if?(k?!=?dt.Columns.Count?-?1)

{

sql?=?sql?+?dt.Rows[t][k].ToString()?+?"','";

}

else{

sql?=?sql?+?dt.Rows[t][k].ToString()?+?"')";

}

}

cmd?=?new?OleDbCommand(sql,?connection);

cmd.ExecuteNonQuery();

}

connection.Close();

return?true;

}

else{

MessageBox.Show("Excel中"+?tableName?+"表的原始數據格式不正確!");

}

return?false;

}

private?void?button2_Click(object?sender,?EventArgs?e)

{

int?flag?=?1;?//判斷由Excel表導入到Mdb是否成功的標記變量?&nbsp

  • 上一篇:2012年有什麽新出的美國科幻大片
  • 下一篇:datatables的Bootstrap樣式的分頁怎麽添加首頁和尾頁
  • copyright 2024編程學習大全網