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

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

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

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

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

textual
Листинг программы
        string GetConnectionString(FileInfo _file)
        {
            Dictionary<string, string> props = new Dictionary<string, string>();
 
 
            // XLSX - Excel 2007, 2010, 2012, 2013
            if (_file.Extension == ".xlsx")
            {
                props["Provider"] = "Microsoft.ACE.OLEDB.12.0;";
                props["Extended Properties"] = "Excel 12.0 XML";
                props["Data Source"] = _file.FullName;
            }
            else if (_file.Extension == ".xls")
            {
                props["Provider"] = "Microsoft.Jet.OLEDB.4.0";
                props["Extended Properties"] = "Excel 8.0";
                props["Data Source"] = "C:\\MyExcel.xls";
            }
            else throw new Exception("Неизвестное расширение файла!");
            
            StringBuilder sb = new StringBuilder();
 
            foreach (KeyValuePair<string, string> prop in props)
            {
                sb.Append(prop.Key);
                sb.Append('=');
                sb.Append(prop.Value);
                sb.Append(';');
            }
 
            return sb.ToString();
        }
 
        private void File_Selected_New(FileInfo _file)
        {
            Stopwatch sw_total = new Stopwatch();
            sw_total.Start();
 
            DataSet ds = new DataSet();
            string connectionString = GetConnectionString(_file);
 
            using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connectionString))
            {
                conn.Open();
                System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand();
                cmd.Connection = conn;
                
                // Get all Sheets in Excel File
                DataTable dtSheet = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
 
                // Loop through all Sheets to get data
                foreach (DataRow dr in dtSheet.Rows)
                {
                    string sheetName = dr["TABLE_NAME"].ToString();
                    
                    // Get all rows from the Sheet
                    cmd.CommandText = "SELECT * FROM [" + sheetName + "]";
 
                    DataTable dt = new DataTable();
                    dt.TableName = sheetName;
 
                    System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(cmd);
                    da.Fill(dt);
 
                    ds.Tables.Add(dt);
                }
 
                List<List<string>> list_table = new List<List<string>>();
                for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
                {
                    List<string> list_row = new List<string>();
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                            list_row.Add(ds.Tables[0].Rows[i].ItemArray[j].ToString());
                    list_table.Add(list_row);
                }
            }
            sw_total.Stop();
            lbTimes.Items.Add("Reading (new): " + sw_total.ElapsedMilliseconds + " ms");
        }

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


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

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

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