Ich verwende Python- docx, und da Diagramme nicht nativ unterstützt werden, mache ich Folgendes:
- rufe die XML-Datei des Diagramms aus document.xml ab< /code>
- finden Sie den zugehörigen chart.xml-Teil und die entsprechende rId
- fügen Sie die chart.xml zur Ziel-Dokumentdatei als hinzu Neuer Teil und eine neue rId erhalten
- ersetzen Sie die rId in der XML von Schritt 1 und hängen Sie sie dann an die document.xml des Ziels an docx
- Teile hinzufügen von chart.xml mit der Ziel-Dokumentdatei verknüpft und chart.xml mit den neuen rIds
Code: Select all
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
Ich habe versucht, es mit dem Open XML Productivity Tool zu validieren. Es gibt zwei Fehler, aber ich glaube nicht, dass sie relevant sind.
(Es werden dieselben Fehler gemeldet in eine normale docx-Datei mit Diagrammen als na ja)


Also, ich würde es gerne tun wissen, was das Problem der Ergebnisdatei ist und welche Teile Ich fehle hier, danke.
Teilen Sie alle 3 docx-Dateien hier: py_docx
Ich weiß, dass diese Funktion möglicherweise perfekt ist kommerzielle Bibliotheken, aber es scheint im Moment keine Option für mich zu sein:)