OpenXML SDK не поддерживает функцию редактирования данных в Excel в диаграмме в новом документе.

Я использую OpenXML SDK для создания документов Word на С#. Когда дело доходит до диаграммы, она не поддерживает функцию редактирования данных в Excel.

Я нашел здесь пример кода для создания диаграммы. Щелкните правой кнопкой мыши область диаграммы и выберите «Редактировать данные». Ничего не произойдет. https://code.msdn.microsoft.com/office/How-to-create-Chart-into-a7d424f6

введите здесь описание изображения

Ожидаемое поведение — открытие Excel с данными. введите здесь описание изображения

Я также пробовал использовать другую популярную библиотеку OpenSource Xceed Docx https://github.com/xceedsoftware/docx.

Там тоже такая же проблема. Syncfusion поддерживает эту функцию за плату.

Как реализовать эту функцию с помощью OpenXML SDK, DocX или любой другой библиотеки с открытым исходным кодом?

Отредактировано 30 ноября. Мне известно о создании документа из шаблона (в шаблоне уже есть диаграмма, и он поддерживает функцию редактирования Excel), а затем либо скопировать его/сгенерировать код, а затем обновить значения диаграммы с помощью OpenXMLSDK PowerTool/ OpenXMLSDK Productivity Инструмент.

пример: OpenXmlPowerTools.ChartUpdater.UpdateChart() http://ericwhite.com/blog/update-cached-data-and-embedded-xlsx-for-charts-in-docx-pptx/

Я ищу создание диаграммы в новом документе, таком как компонент синхронизации. Syncfusion не ожидает никакого шаблона.

Любая помощь будет оценена по достоинству. Спасибо


person robert jebakumar2    schedule 27.11.2017    source источник
comment
В заголовке вашего вопроса говорится, что OpenXML SDK не поддерживает функцию редактирования данных в Excel в диаграмме, но поддерживает. И мой ответ показывает вам шаг за шагом, как это сделать. После того, как я ответил, вы изменили свой вопрос (но оставили заголовок). Мое решение отвечает на ваш первоначальный вопрос, прежде чем вы его изменили. Вы можете задать подробный вопрос в разделе «Рекомендации по программному обеспечению» — см. softwarerecs.meta.stackexchange.com/questions/8/   -  person Taterhead    schedule 01.12.2017
comment
Привет, Татерхед, я согласился и также изменил название. В моем сценарии шаблонный подход я могу не использовать. Я предполагаю, что люди будут использовать код примера по ссылке, которую я предоставил. Жду ответа на свежий документальный подход. если я не получу ответа через 7 дней, я приму это как ответ.   -  person robert jebakumar2    schedule 01.12.2017
comment
Привет, Татерхед! Почему упомянутый пример кода не позволяет использовать функцию редактирования Excel. есть идеи? Один из способов — разархивировать и сравнить файлы docx OpenXml SDK и вручную вставить диаграмму с помощью ленты. Любая помощь будет оценена   -  person robert jebakumar2    schedule 01.12.2017
comment
Я только что скачал код и сгенерировал docx с диаграммой по ссылке MSDN. Мне удалось успешно отредактировать данные в Excel, используя меню правой кнопки мыши. У меня Win10 с Excel/Word 2016. Возможно, ваш процесс Excel завис и помешал запуску Excel. Попробуйте очистить зомби-процессы Excel с помощью диспетчера задач или перезагрузки.   -  person Taterhead    schedule 01.12.2017


Ответы (1)


Да, это возможно с помощью бесплатного OpenXML SDK и OpenXML Productivity Tool. Следуй этим шагам:

  1. Начните с установки OpenXML SDK и OpenXML Productivity Tool на вашу машину для разработки.
  2. Используя Word, создайте документ Word, содержащий круговую диаграмму с желаемыми окончательными требованиями.
  3. С помощью Инструмента повышения производительности откройте документ Word, созданный на шаге 2, и нажмите кнопку Reflect Code вверху. Код C#, необходимый для создания документа, будет в окне справа.
  4. С помощью Visual Studio создайте простой проект консольного приложения C# с именем WordChartGenerator. Для этого проекта введите Install-Package DocumentFormat.OpenXML в консоли диспетчера пакетов. Это извлечет необходимые DLL для вашего проекта, чтобы использовать OpenXML.
  5. Создайте новый файл класса для этого проекта: назовите его GeneratedClass.cs и замените все содержимое, используя код, созданный на шаге 3.
  6. Измените строку пространства имен в верхней части GeneratedClass.cs на namespace WordChartGenerator.
  7. Вернитесь к файлу Program.cs и внутри main создайте экземпляр класса GeneratedClass и вызовите CreatePackage с путем к желаемому полному имени пути к файлу. Что-то вроде следующего:

    class Program
    {
        static void Main(string[] args)
        {
            var wordGenerator = new GeneratedClass();
        wordGenerator.CreatePackage("C:\\Users\\jeff\\Documents\\WordWithChart.docx");
        }
    }
    
  8. запустите программу, и она создаст ваш файл в указанном вами каталоге.

Снимок экрана ниже сделан из файла, созданного с помощью этих шагов.

введите здесь описание изображения

person Taterhead    schedule 30.11.2017