Считывание из Excel в массив - C#

Узнай цену своей работы

Формулировка задачи:

Помогите плиз со следующим вопросом. Необходимо считать данные из Excel-файла считать в некий массив с целью его дальнейшей сортировки и вывода некоторых списков в соответствии с полученным результатом. Вопрос собственно в следующем - как организовывается само считывание с некоего известного файла. Поиском пользовалась и статьи в нете тоже читала, но рахобраться все равно не могу. Если можно, напишите пожалуйста хоть с минимальными комментариями. Заранее спасибо.

Решение задачи: «Считывание из Excel в массив»

textual
Листинг программы
  1.         string GetConnectionString(FileInfo _file)
  2.         {
  3.             Dictionary<string, string> props = new Dictionary<string, string>();
  4.  
  5.  
  6.             // XLSX - Excel 2007, 2010, 2012, 2013
  7.             if (_file.Extension == ".xlsx")
  8.             {
  9.                 props["Provider"] = "Microsoft.ACE.OLEDB.12.0;";
  10.                 props["Extended Properties"] = "Excel 12.0 XML";
  11.                 props["Data Source"] = _file.FullName;
  12.             }
  13.             else if (_file.Extension == ".xls")
  14.             {
  15.                 props["Provider"] = "Microsoft.Jet.OLEDB.4.0";
  16.                 props["Extended Properties"] = "Excel 8.0";
  17.                 props["Data Source"] = "C:\\MyExcel.xls";
  18.             }
  19.             else throw new Exception("Неизвестное расширение файла!");
  20.            
  21.             StringBuilder sb = new StringBuilder();
  22.  
  23.             foreach (KeyValuePair<string, string> prop in props)
  24.             {
  25.                 sb.Append(prop.Key);
  26.                 sb.Append('=');
  27.                 sb.Append(prop.Value);
  28.                 sb.Append(';');
  29.             }
  30.  
  31.             return sb.ToString();
  32.         }
  33.  
  34.         private void File_Selected_New(FileInfo _file)
  35.         {
  36.             Stopwatch sw_total = new Stopwatch();
  37.             sw_total.Start();
  38.  
  39.             DataSet ds = new DataSet();
  40.             string connectionString = GetConnectionString(_file);
  41.  
  42.             using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connectionString))
  43.             {
  44.                 conn.Open();
  45.                 System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand();
  46.                 cmd.Connection = conn;
  47.                
  48.                 // Get all Sheets in Excel File
  49.                 DataTable dtSheet = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
  50.  
  51.                 // Loop through all Sheets to get data
  52.                 foreach (DataRow dr in dtSheet.Rows)
  53.                 {
  54.                     string sheetName = dr["TABLE_NAME"].ToString();
  55.                    
  56.                     // Get all rows from the Sheet
  57.                     cmd.CommandText = "SELECT * FROM [" + sheetName + "]";
  58.  
  59.                     DataTable dt = new DataTable();
  60.                     dt.TableName = sheetName;
  61.  
  62.                     System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(cmd);
  63.                     da.Fill(dt);
  64.  
  65.                     ds.Tables.Add(dt);
  66.                 }
  67.  
  68.                 List<List<string>> list_table = new List<List<string>>();
  69.                 for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
  70.                 {
  71.                     List<string> list_row = new List<string>();
  72.                     for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
  73.                             list_row.Add(ds.Tables[0].Rows[i].ItemArray[j].ToString());
  74.                     list_table.Add(list_row);
  75.                 }
  76.             }
  77.             sw_total.Stop();
  78.             lbTimes.Items.Add("Reading (new): " + sw_total.ElapsedMilliseconds + " ms");
  79.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.429 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут