Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// <summary>
- /// Загружает из первого листа excel-файла данные в таблицу <seealso cref="System.Data.DataTable"/> в чистом виде, без всяких изменений.
- /// При этом, очевидно, игнорируется все форматирование, в том числе объединение ячеек.
- /// Загрузка происходит с помощью oleDb-объекта, excel при этом не запускается.
- /// </summary>
- /// <param name="fileName">Путь к открываемому файлу excel</param>
- /// <returns><seealso cref="System.Data.DataTable"/>копия таблицы excel</returns>
- public static DataTable GetTableFromExcel(string fileName)
- {
- string connectionString =
- $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"{fileName}\";Extended Properties='EXCEL 12.0;HDR=No;IMEX=1'";
- DataTable excelTable = new DataTable();
- DataTable listTable = new DataTable();
- OleDbConnection excelConnection = new OleDbConnection(connectionString);
- string sheetName = null;
- try
- {
- excelConnection.Open();
- listTable = excelConnection.GetSchema("Tables");
- if (listTable.Rows.Count > 0)
- sheetName = listTable.Rows[0]["TABLE_NAME"].ToString();
- listTable.Clear();
- listTable.Dispose();
- if (!string.IsNullOrEmpty(sheetName))
- {
- var oleExcelCommand = excelConnection.CreateCommand();
- oleExcelCommand.CommandType = CommandType.Text;
- oleExcelCommand.CommandText = $"SELECT * FROM [{sheetName}]";
- using (var reader = oleExcelCommand.ExecuteReader())
- {
- excelTable.Load(reader);
- }
- }
- }
- catch (Exception ex) { MessageBox.Show(ex.Message); }
- finally { excelConnection.Close();}
- return excelTable;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement