搜尋此網誌
2011年8月14日 星期日
excel 轉 datatable
public DataTable ExcleToDt(String filePath)
{
//filePath 檔案路徑
//sheetName 預設工作表名稱
string sheetName="Sheet1";
int i;
StreamWriter StreamWriterObj;
OleDbConnection objConn ;
DataTable dt;
DataTable dt2=new DataTable() ;
ArrayList ary=new ArrayList() ;
try
{
DataSet myDataset=new DataSet();
string strConn;
//xls
//strConn = "Provider='Microsoft.Jet.OLEDB.4.0';" + "Data Source='" + filePath + "';Extended
//Properties='Excel 8.0;IMEX=1;HDR=NO;'";
//HDR=NO 表轉入後第一行為欄位名稱 主要是判斷該EXCEL欄位有無缺少
//可讀xlsx
strConn = "Provider='Microsoft.Ace.OleDb.12.0';" + "Data Source='" + filePath + "';Extended Properties='Excel
12.0;IMEX=1;HDR=NO;'";
//使用可讀xlsx前需先下載安裝Microsoft Access Database Engine 2010 可轉散發套件
//http://www.microsoft.com/downloads/zh-tw/details.aspx?familyid=C06B8369-60DD-4B64-A44B-
//84B371EDE16D&displaylang=zh-tw
objConn = new OleDbConnection(strConn);
objConn.Open();
dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);
if (dt.Rows.Count >1)
{
foreach (DataRow row in dt.Rows)
{
if (row["TABLE_NAME"].ToString().IndexOf("$") != -1 )
{
if (row["TABLE_NAME"].ToString().IndexOf("交付表格") != -1 ||
row["TABLE_NAME"].ToString().IndexOf("sheet1") != -1)
{
ary.Add(row["TABLE_NAME"]);
}
}
}
}
sheetName = ary[0].ToString() ;
OleDbDataAdapter myData =new OleDbDataAdapter("SELECT * FROM [" + sheetName + "]",
strConn);
myData.TableMappings.Add("Table", "ExcelTest");
myData.Fill(myDataset);
for (int ii = 0 ;ii<= myDataset.Tables[0].Columns.Count - 1;ii++)
{
if (myDataset.Tables[0].Rows[0][ii].ToString() == string.Empty)
{
break ;
}
if (myDataset.Tables[0].Rows[0][ii].ToString() == "EXCEL上的中文名稱1" )
{
myDataset.Tables[0].Columns[ii].ColumnName = "AAA";
}
else if (myDataset.Tables[0].Rows[0][ii].ToString() == "EXCEL上的中文名稱1")
{
myDataset.Tables[0].Columns[ii].ColumnName = "BBB";
}
}
dt2 = myDataset.Tables[0];
objConn.Close();
}
catch
{
}
return dt2;
}
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言