Как вы программно проверяете наличие заголовков в C #

Я создаю приложение winform, где каждый день пользователь будет выбирать файл xlsx с информацией о доставке дня, которая будет объединена с нашими данными фактурирования.

Проблема, с которой я сталкиваюсь, заключается в том, что пользователь не загружает файл xlsx со спецификацией, требуемой данными winform. (Мне жаль, что я не могу устранить этот шаг с помощью API-соединения, но, к сожалению, я не могу)

Мой первый шаг – проверить, имеет ли файл xlsx заголовки, что мой путь к файлу действителен

пример

string connString = "provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + *path* + "';Extended Properties='Excel 12.0;HDR=YES;';"; 

Где путь возвращается из окна OpenFileDialog

Если файл был выбран, загрузка не была загружена с заголовками, приведенное выше высказывание выдает исключение.

Если изменение HDR = ДА; до HDR = NO; то у меня возникли проблемы с определением нужных столбцов, и если Пользователь потрудился включить правильные.

Затем мой код пытается загрузить данные в DataTable

  private void loadRows() { for (int i = 0; i < deliveryTable.Rows.Count; i++) { DataRow dr = deliveryTable.Rows[i]; int deliveryId = 0; bool result = int.TryParse(dr[0].ToString(), out deliveryId); if (deliveryId > 1 && !Deliveries.ContainsKey(deliveryId)) { var delivery = new Delivery(deliveryId) { SalesOrg = Convert.ToInt32(dr[8]), SoldTo = Convert.ToInt32(dr[9]), SoldName = dr[10].ToString(), ShipTo = Convert.ToInt32(dr[11]), ShipName = dr[12].ToString(), }; 

Все это работает только в том случае, если столбцы находятся в нужном месте. Если они не в правильном месте, я должен показать пользователю сообщение, чтобы получить правильную информацию

У кого-нибудь есть предложения? (Извините, в первый раз, задавая вопрос и все еще учась обдумывать это)

Думаю, вы загружаете таблицу в Datatable? Трудно сказать одной строкой кода. Я бы использовал коллекцию столбцов в datatable и проверил, есть ли все столбцы, которые вы хотите. Пример кода для перечисления столбцов ниже.

 private void PrintValues(DataTable table) { foreach(DataRow row in table.Rows) { foreach(DataColumn column in table.Columns) { Console.WriteLine(row[column]); } } } 
  • Файл excel не сохраняет макрос, указанный путь к файлу
  • просматривать файл excel и получать его путь, а затем код Vlookup для всего столбца, используя этот путь к файлу
  • Избегайте диалога «Сохранить как» при преобразовании Excel в XML с помощью сценария VBA
  • Interesting Posts

    Невозможно получить значение от DatePicker

    Чтение файла excel в Java – Ошибка

    Excel, как узнать ключевое слово в предложении

    Не удается сохранить файл excel в c #, если он не дает ошибку только для чтения?

    Преодоление ошибки компиляции «else without if» в моем коде

    sql-запрос для выбора конкретной ячейки в excel

    SaveAs2 дает «Ошибка компиляции: метод или элемент данных не найден»

    Форматирование так, чтобы ячейка окрашивалась по-разному, если она соответствует любому значению в столбце A, или столбце B, или и то, и другое?

    Копирование значения ячейки, сохраняющего форматирование из одной ячейки в другую в Excel с использованием VBA

    Microsoft Excel – как вы автоматически заполняете формулу в столбце?

    Копировать имена рабочих таблиц в столбце (из кода цикла)

    excel рассчитывать на основе значения поля

    Подсчитывать символы между конкретными тегами / словами

    добавление поля в сводную таблицу с использованием VBA

    Определенная пользователем или объектная ошибка (1004) – Excel VBA

    Давайте будем гением компьютера.