Я использую python- docx, и поскольку он не поддерживает диаграммы изначально, я делаю следующее:
- получаю XML-файл прогона диаграммы из document.xml< /code>
- найти связанная частьchart.xml и соответствующий rId
- добавьтеchart.xml в целевой документ как новую часть и получите новый rId
- замените rId в XML-файле шага 1, затем добавьте его в document.xml целевого документа
- добавить части, связанные с файломchart.xml, в целевой документ и обновите файлchart.xml, добавив в него новые rId
Код: Выделить всё
from docx import Document
from docx.oxml import parse_xml
chart_doc = Document("chart.docx")
target_doc = Document("target.docx")
for paragraph in chart_doc.paragraphs:
new_para = target_doc.add_paragraph()
for run in paragraph.runs:
run_xml = run.get_xml()
chart_rid = extract_rid(run_xml)
rel = get_rel_by_id(chart_rid)
chart_part = rel.target_part
new_part = create_part(chart_part)
new_rid = target_doc.relate_to(new_part, rel.reltype)
if has_relationships(rel.target_part):
rids = add_related_parts(chart_part, target_doc)
new_part.blob = replace_rids_in_xml(new_part.content, rids).encode()
new_run = parse_xml(run_xml)
new_para.append(new_run)
target_doc.save("target_modified.docx")
target_modified.docx
Я попробовал проверить это с помощью Инструмента повышения производительности Open XML, есть 2 ошибки, но я не думаю, что они имеют отношение к делу.
(он сообщает о тех же ошибках в обычный файл docx, содержащий диаграммы в виде ну)


Итак, я бы хотел узнать, в чем проблема с файлом результатов, и какие части мне здесь не хватает, спасибо.
поделюсь всеми тремя файлами docx здесь: py_docx
Я знаю, что эта функция может быть включена в несколько идеальных коммерческих библиотек, но на данный момент мне это не подходит

Подробнее здесь: https://stackoverflow.com/questions/793 ... upted-file