В настоящее время я работаю над проектом для обхода документа Excel и вставки данных в базу данных с использованием C #.
Соответствующие данные для этого проекта:
- В листе Excel есть 14 строк в верхней части, которые меня не интересуют. (иногда 15, см. Россия / Сибирь ниже)
- Данные сгруппированы по имени в 2 столбца (дата и значение), например:
Лист 1
USA China Russia
Date Value Date Value Siberia
1/1/09 4.3654 1/1/09 2.7456 Date Value
1/2/09 3.5545 1/3/09 9.3214 2/5/09 0.2454
1/3/09 3.2322 1/21/09 5.2234 2/6/09 0.5557
- Имя, которое мне нужно приобрести, в зависимости от того, что указано непосредственно над «Дата».
- Меня интересуют только данные дат, которых у нас нет в базе данных. Перед анализом каждого набора столбцов я получу максимальную дату для любого заданного имени из базы данных и пропущу что-либо в или до него.
- Нет гарантии, что столбцы будут в постоянном порядке или будут иметь постоянный интервал.
- Мне не нужны данные для всех имен, а только для тех, которые находятся в списке, который я собрал до получения файла.
Мой текущий план такой:
- Для каждого столбца, если поле даты находится в строке 16, сохраните имя в качестве значения в строке 15 над ним, проверьте в базе данных последнюю дату для этого имени, вставляйте данные только в том случае, если дата больше полученной дата.
- Если поле даты находится в строке 17, сделайте то же самое, но начните цикл for через каждую строку в 18.
- Если имя отсутствует в списке, пропустите столбец. Если это так, обязательно возьмите столбец рядом с ним для необходимых значений.
Моя проблема:
- В настоящее время я пытаюсь использовать ExcelDataReader из Codeplex (http://www.codeplex.com/ExcelDataReader). Это нравится только csv-подобные листы, которых нет у этого проекта.
- Я не знаю ни одного альтернативного читателя Excel.
- Насколько мне известно, прямой обход FileStream этого файла может идти только строка за строкой, а не столбец за столбцом.
Всем, кто еще читает, спасибо за ваше время. Любые рекомендации о том, как действовать? Пожалуйста, убедитесь, что решения могут проходить каждый столбец, а не каждый ряд.
Также, пожалуйста, не беспокойтесь о базах данных или списке имен, предшествующих обходу.
Приложение: Что я действительно хотел бы закончить, так это какой-то тип таблицы, которую я могу просто перемещать с помощью вложенного цикла, что делает обход по центру столбца намного, намного проще. Поскольку в верхней части листа так много мусора (более 14 строк), самые простые решения неосуществимы.