Файл Excel в класс модели домена с использованием net framework - PullRequest
0 голосов
/ 31 марта 2020

Возможно, название немного расплывчато, но я хочу открыть, прочитать файл Excel и заполнить объект.

Например:

У меня есть модель домена

public class CustomerModel
    {
        public string Name { get; set; }
        public string EmployeeNumber { get; set; }
    }

Мой файл Excel будет содержать те же столбцы, что и модель.

Я нашел пример этого с помощью Microsoft.Office.Interop.Excel Я просто настроил его для своей модели так:

public static List<CustomerModel> ExcelExport(int i, int j, string path)
        {
            try
            {
                Application excelApp;
                Workbook excelWorkBook;
                Worksheet excelWorkSheet;
                Range range;

                int rCnt;
                int rw = 0;
                int cl = 0;

                excelApp = new Application();

                excelWorkBook = excelApp.Workbooks.Open(path);

                //get the first sheet 
                excelWorkSheet = (Worksheet)excelWorkBook.Worksheets.get_Item(1);

                range = excelWorkSheet.UsedRange;
                // get the total row count
                rw = range.Rows.Count;
                //get the total column count
                cl = range.Columns.Count;

                List<CustomerModel> customers = new List<CustomerModel>();

                // traverse all the row in the excel
                for (rCnt = 1; rCnt <= rw; rCnt++)
                {
                    if (rCnt % 5 == 1)
                    {//get rows 

                        for (int col = 2; col <= cl; col++)
                        {//traverse columns (the first column is not included)

                            for (int rowABCD = rCnt + 1; rowABCD <= rCnt + 4; rowABCD++)
                            {
                                CustomerModel model = new CustomerModel();

                                model.Name = (string)(range.Cells[rCnt, 1] as Range).Value2.ToString();

                                model.EmployeeNumber = (string)(range.Cells[rCnt, col] as Range).Value2.ToString();

                                customers.Add(model);
                            }
                        }

                    }

                }

                excelWorkBook.Close(true, null, null);
                excelApp.Quit();
                Marshal.ReleaseComObject(excelWorkSheet);
                Marshal.ReleaseComObject(excelWorkBook);
                Marshal.ReleaseComObject(excelApp);

                return customers;
            }
            catch (Exception ee)
            {

                throw;
            }
      }

проблема в том, что я не могу гарантировать, что на компьютере / сервере, где он должен работать, будет установлен офис.

Есть ли надежный способ сделать это?

PS: я не знаю, относится ли это к делу, но я делаю это, так как заполню таблицу в SQL из файла Excel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...