using System.Data.OleDb;

 

 

 

//HRD=Yes是說要不要把Excel檔裡面的第一行資料當成資料欄位,如果是No就是當成資料了

//IMEX=1是說把Excel裡面的資料都當成文字來讀,這樣的作法才能全部資料都讀的到

//ReadOnly=0是如果你要用ADO.NET去寫資料進Excel的話,就一定要設定

//如果不設定ReadOnly的話,會出現"運作必須使用更新查詢"的錯誤喔

//MyPath是一個Excel檔案的路徑的變數,像是C:\Hello\Cool.xls這樣

string conStr = "";

conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + MyPath + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1,ReadOnly=0'"

 

OleDbConnection cn = new OleDbConnection(conStr);        

 

cn.Open();

 

//下面這個GetOleDbSchemaTable是可以取得一個資料表,裡面有你讀的那個Excel檔的一些資料

//像是會列出裡面每個Sheet(Excel工作表)的名字

DataTable excelSchema = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" });


//上面那個資料表裡面放Sheet名字的欄位是叫做TABLE_NAME

//所以下面會取出Sheet1$這個變數

string mappingSheet = excelSchema.Rows[0]["TABLE_NAME"].ToString();

 


---------------------------------無關的補充=.=--------------------------------

//補充一下如果要取得SQL資料表的結構的話(就是有些什麼欄位阿、型態阿..等等),就用

string[] restrictions = new string[4] { "資料庫的名字", null, "資料表的名字", null };

 

DataTable SqlSchema = cn.GetSchema("Columns",restrictions);

 

但注意這是取的Sql資料庫裡面的資料表的結構,

所以這邊的cn要用SqlConnection和相關的連資料庫的字串來產生喔

---------------------------------無關的補充=.=--------------------------------

 


OleDbDataAdapter DAC = new OleDbDataAdapter();

 

//然後就去下SQL語法取資料出來

using (OleDbCommand myCmdSe = new OleDbCommand("SELECT * FROM [" + mappingSheet + "]", cn))

{

   DAC.SelectCommand = myCmdSe;

 

   DAC.Fill(放個DataTable吧);

}

//然後上面就完成了把資料放到某個DataTable裡了

 

//如果要在Excel裡面創一個Sheet叫做HelloHi且裡面有三個欄位的話就用下面這個語法

注意HelloHi後面那個$符號要加,(雖然有時好像不加反而可以=.=,都試試吧)

string myStr = "CREATE TABLE [HelloHi$] ([ID] nVarChar,[Name] nVarChar,[Product] nVarChar)";

 

using (OleDbCommand cmd = new OleDbCommand(myStr , cn))

{   

                            cmd.ExecuteNonQuery();

                            cmd.CommandText = "INSERT INTO [" + SheetName + "$] VALUES(1,'elmer','password')";

}

 

//如果要新增資料到Excel裡面的話,就把myStr 改成Insert語法

myStr="INSERT INTO [HelloHi$] VALUES(22,'welkingunther','pixnet')";

 

 如此一來,讀寫就都完成了



 

arrow
arrow
    全站熱搜

    welkingunther 發表在 痞客邦 留言(0) 人氣()