字面上的意思,比較特別值得注意的只有連線字串裡 HDR=Yes 這個參數表示第一行為欄名。
public DataTable RenderDataTableFromExcel(string fullPath)
{
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\"";
connStr = string.Format(connStr, fullPath);
string sheetName = null;
DataTable sheetNames = default(DataTable);
OleDbConnection conn = default(OleDbConnection);
conn = new OleDbConnection(connStr);
conn.Open();
sheetNames = conn.GetSchema("Tables");
if (sheetNames.Rows.Count > 0)
sheetName = sheetNames.Rows[0]["TABLE_NAME"].ToString();
sheetNames.Clear();
sheetNames.Dispose();
OleDbCommand cmd = new OleDbCommand(string.Format("SELECT * FROM [{0}]", sheetName), conn);
OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
DataTable dt = new DataTable();
adapter.Fill(dt);
conn.Close();
return dt;
}
ref: Sai Fan Chen's Blog
沒有留言:
張貼留言