Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // OELDB connection strings
- // http://www.arboundy.com/2010/11/the-microsoft.ace.oledb.12.0-provider-is-not-registered-on-the-local-machine/
- // http://www.microsoft.com/en-us/download/details.aspx?id=13255
- private const string EXCEL_2003_CONNECTION_STRING =
- "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
- private const string EXCEL_2007_CONNECTION_STRING =
- "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
- private const string SELECT_STATEMENT = "SELECT * FROM [{0}]";
- private static OleDbConnection Connect(string file)
- {
- OleDbConnection result = null;
- try
- {
- result = new OleDbConnection(String.Format(EXCEL_2003_CONNECTION_STRING, file));
- result.Open();
- }
- catch
- {
- result = new OleDbConnection(String.Format(EXCEL_2007_CONNECTION_STRING, file));
- result.Open();
- }
- return result;
- }
- // http://stackoverflow.com/questions/1164698/using-excel-oledb-to-get-sheet-names-in-sheet-order
- private static String[] GetExcelSheetNames(OleDbConnection conn)
- {
- using (var dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null))
- {
- if (dt == null) return null;
- return dt.Rows.OfType<DataRow>().Select(row => row["TABLE_NAME"].ToString()).ToArray();
- }
- }
- private static DataTable GetTableFromFirstExcelSheet(string path)
- {
- using (var conn = Connect(path))
- {
- var sheetName = GetExcelSheetNames(conn)[0];
- using (var comm = conn.CreateCommand())
- {
- comm.CommandText = String.Format(SELECT_STATEMENT, sheetName);
- using (var adapter = new OleDbDataAdapter())
- {
- adapter.SelectCommand = comm;
- DataTable table = new DataTable();
- adapter.Fill(table);
- return table;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment