Ряд вопросов при работе с EXCEL таблицей через С# (interop)

233
04 февраля 2020, 18:00

Задача: вытащить данные из строк таблицы минуя строки заголовков, пустые строки и т.п. и засунуть их в массивы обьектов для дальнейшей манипуляции.

Представлен набросок кода, с комментариями-вопросами, прошу если есть возможность дать свои рекомендации, т.к. только начал изучать С#.

    public static Drom_object[] ReadMassive(string path)
    {
        //По полученной ссылке от компонента OpenFileDialog
        //надо бы Считать файл таблицы xls полностью
        //Создаём приложение.
        Excel.Application ObjExcel = new Excel.Application();
        //Открываем книгу.                                                                                                                                                        
        Excel.Workbook ObjWorkBook = ObjExcel.Workbooks.Open(path, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
        //Выбираем таблицу(лист).
        Excel.Worksheet ObjWorkSheet;
        ObjWorkSheet = (Excel.Worksheet)ObjWorkBook.Sheets[1];

        //public int num_lines = read_number_of_lines_in document(); // прочитать общее количество строк в документе. каким методом можно сделать?

        // начинаем засовывать строчки из  таблицы в наши обьекты  Drom_object.
        //  public string global_category; - нам нужна строчка под глобальную категорию товара (запчасти от ДВС или кузовные и т.п.)
        // for(i = 0; i!=num_lines; i++)
        //  {
        //  string line  =  Excel.readline(i) // читаем строчку 
        //  if( колонны с А по M обьединены ) // если это так значит мы прочли заголовок (ДВС, стеклоподьемники и т.п.)
        //   { 
        //    global_category  = line;
        //    }
        //
        //   else {
        //     if( !line.Contains("наименование товара") and !line.IsEmpty() ) - строчки с заголовками и пустые мы не трогаем. а только те, что содержат сами позиции.
        //     {
        // раз строчка не пустая и не содержит заголовков и это не глобальная категория значит это строчка с товаром, начинаем ее разбирать
        // drom_massive[] = add.(new drom_object(columnA,columnB,columnC... etc)); 
        //Удаляем приложение (выходим из экселя) - ато будет висеть в процессах!
        ObjExcel.Quit();

        read_ok = true; // после того как наполнение закончено, поднимаем флаг
        return drom_massive; // Возвращаем наш массив объектов
    }
Answer 1

Если не требуется использовать именно ваш способ, а можно воспользоваться сторонними пакетами, то советую обратить внимание на этот вопрос: C# работа с Excel

Из своего опыта порекомендую посмотреть на EPPlus. Мне показался удобным и простым для понимания

READ ALSO
Работа с DataGridView

Работа с DataGridView

В DataGridView1 созданы столбцы к примеру

213
MySQL как составить SQL запрос?

MySQL как составить SQL запрос?

База данных MySQLИмеется таблица battles и players

323
Переменные в MySQL

Переменные в MySQL

Вопросы закомментированы в коде:

264
Как составить запрос json rpc?

Как составить запрос json rpc?

Пишу json rpc api , проблема такая: посылаю запрос на один адрес exampleru/api/jsonrpc

265