2015年6月26日 星期五

【C#】Excel 轉 DataTable

.xls or .xlsx to datatable using ACE.OLEDB

字面上的意思,比較特別值得注意的只有連線字串裡 HDR=Yes 這個參數表示第一行為欄名。
  1. public DataTable RenderDataTableFromExcel(string fullPath)
  2. {
  3. string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\"";
  4. connStr = string.Format(connStr, fullPath);
  5. string sheetName = null;
  6. DataTable sheetNames = default(DataTable);
  7. OleDbConnection conn = default(OleDbConnection);
  8.  
  9. conn = new OleDbConnection(connStr);
  10. conn.Open();
  11. sheetNames = conn.GetSchema("Tables");
  12. if (sheetNames.Rows.Count > 0)
  13. sheetName = sheetNames.Rows[0]["TABLE_NAME"].ToString();
  14. sheetNames.Clear();
  15. sheetNames.Dispose();
  16.  
  17. OleDbCommand cmd = new OleDbCommand(string.Format("SELECT * FROM [{0}]", sheetName), conn);
  18. OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
  19. DataTable dt = new DataTable();
  20. adapter.Fill(dt);
  21.  
  22. conn.Close();
  23. return dt;
  24. }

ref: Sai Fan Chen's Blog

沒有留言:

張貼留言