Обновление листа Excel, загруженного в ASP. NET MVC - PullRequest
1 голос
/ 13 февраля 2020

У меня есть функция, где загружается лист Excel, и ячейки считываются с использованием имен столбцов, которые соответствуют элементу в списке строк в серверной части. Мне нужно изменить имена столбцов (удалить пробелы и преобразовать в lower ()), чтобы они соответствовали элементам, когда я использую список строк в качестве имен столбцов для чтения таблицы Excel.

Я использую библиотеку IExcelDataReader из пакета nuget. Я прочитал все имена столбцов, используя этот пакет, и перебрал их, пытаясь изменить их, но я не смог этого сделать, поскольку это был режим только для чтения.

Что я могу сделать, чтобы изменить имена столбцов загруженного лист Excel.

          public ActionResult Import(HttpPostedFileBase upload)
          {
              if (upload != null && upload.ContentLength > 0)
                {
                    Stream stream = upload.InputStream;
                    IExcelDataReader reader = null;
                    if (upload.FileName.EndsWith(".xls") || upload.FileName.EndsWith(".xlsx"))
                    {
                        var file = upload.FileName;
                        reader = ExcelDataReader.ExcelReaderFactory.CreateReader(stream);
                        var conf = new ExcelDataSetConfiguration
                        {
                            ConfigureDataTable = _ => new ExcelDataTableConfiguration
                            {
                                UseHeaderRow = true
                            }
                        };
                        var dataSet = reader.AsDataSet(conf);                            

                        var Model = dataSet.Tables[0].Rows;
                        var meta = listOfStrings; // Column names to be read in a list 
                            for (int i = 0; i < Model.Count; i++)
                            {
                                var dict = new Dictionary<string, string>();
                                foreach (var item in meta)
                                {
                                    dict.Add(item, Model[i][item.ToLower().Trim()].ToString());
                                    // During this stage I need the column names to exactly match my list of string                         
                                   // What can I do to Convert my strings to lower case and trim them?
                                }
                             }
                    }
                 }
             }
...