ConnectionString
==================
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";

OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";

==============================
  string dateStr = string.Empty;
 string oleDBConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txtFileName.Text.Trim()
  + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";";
 OleDbConnection ocn = new OleDbConnection(oleDBConStr);
 ocn.Open();

DataTable excelSchema = ocn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { nullnullnull"TABLE" });
ocn.Close();
string mappingSheet = excelSchema.Rows[0]["TABLE_NAME"].ToString();





 DataTable dt1 = new DataTable();
 (new OleDbDataAdapter("select * from " + mappingSheet, ocn)).Fill(dt1);
 for (int i = 0; i < dt1.Rows.Count; i++)
 {
  dateStr = Convert.ToDateTime(dt1.Rows[i][2].ToString()).ToString("yyy/MM/dd");
  dt1.Rows[i][2] = dateStr;
 }
 dataGridView1.DataSource = dt1;
 //dataGridView1.Refresh();

 

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

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

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

. 如果不設定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')";

創作者介紹
創作者 albert0956的部落格 的頭像
albert0956

albert0956的部落格

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