Управлять книгами Excel программно
У меня есть книга Excel, которую я хочу использовать в качестве шаблона. Он имеет несколько рабочих таблиц, один из которых создает симпатичные графики и суммирует числа. Лист 1 должен быть заполнен данными, сгенерированными другой программой. Данные поступают в файл с разделителями табуляции.
В настоящее время пользователь импортирует файл с разделителями табуляции в новую книгу, выбирает все и копирует. Затем идет к шаблону и вставляет данные в sheet1.
Это большой объем данных, 269 столбцов и более 135 000 строк. Это громоздкий процесс, и пользователи не являются опытными пользователями Excel. Все, чего они действительно хотят, - это красивые графики.
Я хотел бы добавить шаг после программы, которая генерирует данные, чтобы программно автоматизировать процесс, который пользователь в настоящее время должен выполнять вручную.
Кто-нибудь может предложить лучший метод / язык программирования, который мог бы достичь этого?
4 ответа
POI является ответом. Посмотрите на сайт Apache. Вы можете использовать Java для чтения данных и размещения их в ячейках. Примеры очень простые.
Вы можете решить это, например, с помощью простого макроса VBA. Просто используйте макро-рекордер для записи шагов, которые пользователь сейчас делает вручную, это даст вам возможность начать (вероятно, вам придется добавить функцию, позволяющую пользователю выбрать файл импорта).
Вы сказали, что у вас есть данные, сгенерированные другой программой. Что за программа? Программа, которую вы разработали самостоятельно, и где вы можете добавить функцию Excel-импорта? Или сторонняя программа с графическим интерфейсом, который не может быть легко автоматизирован?
И если вы действительно хотите создать внешнюю программу для этой задачи - выберите любой язык программирования, который вам нравится, если он может использовать COM-объекты. В.NET у вас есть возможность использовать VSTO, но я хотел бы предложить это для этой задачи, если у вас уже есть некоторый опыт с этим (но чем бы вы не задавали такой вопрос, я думаю:-))
Смотри сюда:
Создать файл Excel (.XLS и.XLSX) из C#
Есть NPOI (версия POI для.NET Framework), так что вы можете писать код на C#, если хотите.
Если вы используете две книги - одну для данных и одну для графиков - и не обновляете ссылки автоматически, вы можете использовать макрос для получения данных (возможно, соединение ODBC, если файл в формате, который он может прочитать - длинный снимок) и затем свяжите диаграммы с рабочей книгой данных.
Используйте макрос, чтобы обновить ссылки и сгенерировать диаграммы, а затем отправить их и надеяться, что никто не обновит ссылки.