Программно генерируемая книга Excel с графиками и диаграммами - PullRequest
0 голосов
/ 10 ноября 2009

Мне нужно создать рабочую книгу с необработанными данными на листе и сводной таблицей на другом листе. Сводка создается из необработанных данных. Затем мне нужно создать диаграмму с этим стержнем на том же или новом листе.

Как я могу сделать это в C # - и возможно ли это с помощью VSTO?

Ответы [ 3 ]

4 голосов
/ 24 марта 2011

Самый простой способ сделать это?
Используйте Open XML SDK 2.0

  1. Создание предварительно сгенерированной версии рабочей книги с необработанными данными, сводной таблицей и уже созданной сводной диаграммой.
  2. Установите пакет установки OpenXML SDK 2.0
  3. Используйте инструмент повышения производительности OpenXML SDK 2.0 из этой установки, чтобы открыть книгу
  4. Выберите корневой элемент на левой панели, затем щелкните правой кнопкой мыши и выберите «Отражать код»
  5. Готово - на левой панели находится полный класс C # с кодом, необходимым для генерации файла.
  6. Ну, не совсем сделано, поскольку вам все еще нужно реорганизовать код, чтобы учесть динамическое добавление необходимого содержимого данных, однако это даст вам 97% пути, если вы уже достаточно хорошо знаете C #.
2 голосов
/ 10 ноября 2009

Я делал нечто похожее на это раньше, но я не делал этого с помощью C #. Я использовал VBA, поскольку язык уже встроен в Excel.

Мой подход был такой:

  • Создайте рабочую таблицу под названием «RAW DATA». Эта рабочая таблица содержит объект QueryTable, который можно обновить с помощью кода в VBA.
  • Я вручную создал сводную таблицу на основе таблицы QueryTable в таблице RAW DATA.
  • Затем я добавил код в VBA, чтобы после обновления RAW DATA сводная таблица обновлялась новыми данными.

Этот метод работает очень хорошо, если компоновка ваших необработанных данных и сводной таблицы остается неизменной. У меня есть книга, которую я сделал для коллеги, которая обновляет несколько листов сводными таблицами на основе одного набора данных. Ей действительно это нравится, потому что, просто нажав одну кнопку, она обновляет представление всех своих данных.

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

1 голос
/ 13 ноября 2009

Один из вариантов - подключиться к базе данных из Excel и обновить лист «Необработанные данные» через VBA или , определяя запрос SQL в источнике данных Pivot . Это не так здорово, так как пользователь, открывающий файл, должен иметь возможность подключиться к базе данных.

Другой вариант - заполнить лист «Необработанные данные» программно через C #. В этом вам могут помочь многочисленные библиотеки , даже некоторые бесплатные , но вы также можете сделать это самостоятельно, используя формат Excel XML (SpreadsheetML). Вы можете использовать Excel 2003 формат XML или новый Open XML Excel формат . Последнее намного сложнее, но с его помощью вы также можете воспользоваться OpenXML SDK и Excel Package API .

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