Advertisement
al_himik

Excel read method

May 13th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.90 KB | None | 0 0
  1. /// <summary>
  2. /// Загружает из первого листа excel-файла данные в таблицу <seealso cref="System.Data.DataTable"/> в чистом виде, без всяких изменений.
  3. /// При этом, очевидно, игнорируется все форматирование, в том числе объединение ячеек.
  4. /// Загрузка происходит с помощью oleDb-объекта, excel при этом не запускается.
  5. /// </summary>
  6. /// <param name="fileName">Путь к открываемому файлу excel</param>
  7. /// <returns><seealso cref="System.Data.DataTable"/>копия таблицы excel</returns>
  8. public static DataTable GetTableFromExcel(string fileName)
  9. {
  10.     string connectionString =
  11.         $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"{fileName}\";Extended Properties='EXCEL 12.0;HDR=No;IMEX=1'";
  12.     DataTable excelTable = new DataTable();
  13.     DataTable listTable = new DataTable();
  14.     OleDbConnection excelConnection = new OleDbConnection(connectionString);
  15.     string sheetName = null;
  16.     try
  17.     {
  18.         excelConnection.Open();
  19.         listTable = excelConnection.GetSchema("Tables");
  20.         if (listTable.Rows.Count > 0)
  21.             sheetName = listTable.Rows[0]["TABLE_NAME"].ToString();
  22.         listTable.Clear();
  23.         listTable.Dispose();
  24.         if (!string.IsNullOrEmpty(sheetName))
  25.         {
  26.             var oleExcelCommand = excelConnection.CreateCommand();
  27.             oleExcelCommand.CommandType = CommandType.Text;
  28.             oleExcelCommand.CommandText = $"SELECT * FROM [{sheetName}]";
  29.             using (var reader = oleExcelCommand.ExecuteReader())
  30.             {
  31.                 excelTable.Load(reader);
  32.             }
  33.         }
  34.     }
  35.     catch (Exception ex) { MessageBox.Show(ex.Message); }
  36.     finally { excelConnection.Close();}
  37.     return excelTable;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement