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[] { null, null, null, "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')";
請先 登入 以發表留言。