Experiment: Grundschema für Fragebogen generieren

This commit is contained in:
Fischlurch 2023-05-18 21:37:20 +02:00
parent 016c00d5d6
commit a26bd9f133
3 changed files with 115 additions and 21 deletions

View file

@ -42,10 +42,10 @@ besonders relevant:
logisches Format:: Metadaten + verschachtelte Sequenz von _Block_- und _Inline_-Elementen
+
- Block-Elemente sind: Paragraph, Table, Image, Drawing
- Inline-Elemente sind: Run (=Text-Schnippsel mit einheitlichem Format), Table, Image, Frame
- Inline-Elemente sind: Run (=Text-Schnipsel mit einheitlichem Format), Table, Image, Frame
+
Sowohl Block-, alsauch Inline-Elemente sind direkt mit einem _Style_ ausgezeichnet.
Dieser kann sowohl _direkte Foramtierung_ umfassen, aber auch auf einen _definierten Style_
Dieser kann sowohl _direkte Formatierung_ umfassen, aber auch auf einen _definierten Style_
aus dem Stylesheet (``Formatvorlage'') per Name-ID verweisen.
[yellow-background]#WIP#
@ -69,6 +69,11 @@ und sofort in Word-Content transformiert wird. Es ergeben sich aber im Detail ei
auch noch XML-quoted.
- wir haben mehrere Item-Typen, mit einer jeweils anderen Datenstruktur => Polymorphismus
NOTE: es ist mit den gegebenen Mitteln nicht möglich, das Tabellen-Styling zu steuern.
Man könnte der ganzen Tabelle einen Style zuweisen, und man kann den Parahgraphs
in jeder Zelle einen Style zuweisen (oder sie manuell formatieren). Jedoch
kein Zugriff auf Rahmenarten, Cell-Alignment, Shading
Verarbeitungs-Schema
~~~~~~~~~~~~~~~~~~~~
[yellow-background]#(dies ist der Plan zur Implementierung)#:

View file

@ -64,7 +64,7 @@
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1684368494840" ID="ID_1680262238" MODIFIED="1684377529586" POSITION="right" TEXT="Vor-Analyse (Hermann)">
<icon BUILTIN="pencil"/>
<node CREATED="1684377232205" ID="ID_1958647529" MODIFIED="1684377240495" TEXT="Word-Dokument">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684377241659" ID="ID_211996471" MODIFIED="1684425608790" TEXT="Analyse">
<node COLOR="#435e98" CREATED="1684377241659" ID="ID_211996471" MODIFIED="1684438272776" TEXT="Analyse">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1684377247978" ID="ID_274709233" MODIFIED="1684377253589" TEXT="XML direkt anschauen">
<icon BUILTIN="button_ok"/>
@ -80,30 +80,89 @@
<node CREATED="1684377307327" ID="ID_308902955" MODIFIED="1684377320981" TEXT="Nur Liste der Paragraphen funktioniert"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684377338918" ID="ID_350207560" MODIFIED="1684425582574" TEXT="Experimente">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684377348301" ID="ID_1351208320" MODIFIED="1684377523104" TEXT="gew&#xfc;nschte Struktur generieren">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1684377363350" ID="ID_1722191248" MODIFIED="1684377417600" TEXT="Paragraph Level-1">
<node COLOR="#338800" CREATED="1684377338918" ID="ID_350207560" MODIFIED="1684438265559" TEXT="Experimente">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1684377348301" ID="ID_1351208320" MODIFIED="1684437598098" TEXT="gew&#xfc;nschte Struktur generieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1684377363350" ID="ID_1722191248" MODIFIED="1684435087712" TEXT="Paragraph Level-1">
<icon BUILTIN="button_ok"/>
<node CREATED="1684377418572" ID="ID_789579724" MODIFIED="1684377419307" TEXT="&#xdc;berschrift-Anhang-1"/>
</node>
<node CREATED="1684377374641" ID="ID_656323449" MODIFIED="1684377423139" TEXT="Paragraph Level-2">
<node COLOR="#338800" CREATED="1684377374641" ID="ID_656323449" MODIFIED="1684435090344" TEXT="Paragraph Level-2">
<icon BUILTIN="button_ok"/>
<node CREATED="1684377424067" ID="ID_1421156201" MODIFIED="1684377425518" TEXT="&#xdc;berschrift-Anhang-2"/>
<node CREATED="1684377428482" ID="ID_260102370" MODIFIED="1684377432598" TEXT="Name der Seite"/>
</node>
<node CREATED="1684377374641" ID="ID_1529315456" MODIFIED="1684377441772" TEXT="Paragraph Level-3">
<node COLOR="#338800" CREATED="1684377374641" ID="ID_1529315456" MODIFIED="1684435092168" TEXT="Paragraph Level-3">
<icon BUILTIN="button_ok"/>
<node CREATED="1684377424067" ID="ID_287818753" MODIFIED="1684377444684" TEXT="&#xdc;berschrift-Anhang-3"/>
<node CREATED="1684377428482" ID="ID_1765680266" MODIFIED="1684377451459" TEXT="Fragen zu den ...."/>
</node>
<node CREATED="1684377453023" ID="ID_86415285" MODIFIED="1684377463473" TEXT="Item-Paragraph">
<node COLOR="#338800" CREATED="1684377453023" ID="ID_86415285" MODIFIED="1684435093400" TEXT="Item-Paragraph">
<icon BUILTIN="button_ok"/>
<node CREATED="1684377464360" ID="ID_1556523011" MODIFIED="1684377467816" TEXT="Fragebogen-Item"/>
<node CREATED="1684377469205" ID="ID_582132926" MODIFIED="1684377473847" TEXT="Frage-Text"/>
</node>
<node CREATED="1684377476614" ID="ID_1573790382" MODIFIED="1684377479271" TEXT="Tabelle einf&#xfc;gen">
<node COLOR="#338800" CREATED="1684377476614" ID="ID_1573790382" MODIFIED="1684437513565" TEXT="Tabelle einf&#xfc;gen">
<icon BUILTIN="button_ok"/>
<node CREATED="1684377484011" ID="ID_560492731" MODIFIED="1684377492777" TEXT="3 Zeilen, 6 Spalten"/>
<node CREATED="1684377501825" ID="ID_689639952" MODIFIED="1684377508492" TEXT="1. Zeile : &#xdc;berschriften"/>
<node CREATED="1684377514623" ID="ID_747959819" MODIFIED="1684377521302" TEXT="Soll / IST / K&#xe4;stchen"/>
</node>
<node COLOR="#5b280f" CREATED="1684437520800" ID="ID_1368061567" MODIFIED="1684437543301" TEXT="Tabelle formattieren?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1684437535460" ID="ID_1343724254" MODIFIED="1684437539345" TEXT="kaum m&#xf6;glich"/>
<node CREATED="1684437548824" ID="ID_590685233" MODIFIED="1684437564817" TEXT="Zugriff auf die &lt;w:tcPr&gt; nicht dokumentiert"/>
<node CREATED="1684437569501" ID="ID_1845621487" MODIFIED="1684437580435" TEXT="nur einige Basis-Einstellungen auf das API herausgef&#xfc;hrt"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1684438100831" ID="ID_153078788" MODIFIED="1684438263693" TEXT="Einsichten">
<icon BUILTIN="idea"/>
<node CREATED="1684438106326" ID="ID_1797565143" MODIFIED="1684438169141" TEXT="die Style-Namen via python-docx sind doch so wie in Word angezeigt">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
...und nicht die reine Name-ID, die man im document.xml bzw. styles.xml sieht. Da passiert anscheinend eine &#220;bersetzung
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1684438169989" ID="ID_1369606274" MODIFIED="1684438196649" TEXT="man sollte sich die verf&#xfc;gbaren Styles auflisten lassen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
styles = document.styles
</p>
<p>
paragraph_styles = [
</p>
<p>
&#160;&#160;&#160;&#160;s for s in styles if s.type == WD_STYLE_TYPE.PARAGRAPH
</p>
<p>
]
</p>
<p>
for style in paragraph_styles:
</p>
<p>
&#160;&#160;&#160;&#160;print(style.name)
</p>
</body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1684438201571" ID="ID_618211899" MODIFIED="1684438214862" TEXT="eine Tabellen-Zelle enth&#xe4;lt sofort bereits ein Paragraph-Objekt"/>
<node CREATED="1684438227094" ID="ID_913420734" MODIFIED="1684438246964" TEXT="table.cell(r,c).paragraphs[0] kann man direkt zuweisen">
<node CREATED="1684438247707" ID="ID_1684078459" MODIFIED="1684438248727" TEXT="text"/>
<node CREATED="1684438249187" ID="ID_1947821880" MODIFIED="1684438250519" TEXT="style"/>
</node>
</node>
</node>
</node>
@ -152,7 +211,7 @@
<node CREATED="1684425268727" ID="ID_569253793" MODIFIED="1684425284341" TEXT="Word-Content generieren">
<icon BUILTIN="full-3"/>
<node CREATED="1684425436481" ID="ID_1432225079" MODIFIED="1684425441508" TEXT="das Word-Dokument &#xf6;ffnen"/>
<node CREATED="1684425442736" ID="ID_799029616" MODIFIED="1684425462145" TEXT="die mehrstufie Liste traversieren"/>
<node CREATED="1684425442736" ID="ID_799029616" MODIFIED="1684427181758" TEXT="die mehrstufige Liste traversieren"/>
<node CREATED="1684425463349" ID="ID_844088811" MODIFIED="1684425494890" TEXT="auf jedem Block-Element eine polymorphe render(wordDocument)-Funktion aufrufen"/>
<node CREATED="1684425501667" ID="ID_540891287" MODIFIED="1684425508752" TEXT="Word-Dokument unter neuem Namen speichern"/>
</node>

View file

@ -7,17 +7,47 @@ from pprint import pprint
document = Document('Thesis-Fragebogen.docx')
for par in document.paragraphs:
print(par.text)
print("---style||" + par.style.name)
print("############")
for tab in document.tables:
print("...style||" + tab.style.name)
pprint(dir(tab.style))
# for par in document.paragraphs:
# print(par.text)
# print("---style||" + par.style.name)
# print("############")
# for tab in document.tables:
# print("...style||" + tab.style.name)
# pprint(dir(tab.style))
# pp = par.part
# pprint(dir(pp))
# for r in par.runs:
# pprint(r.text)
from docx.enum.style import WD_STYLE_TYPE
styles = document.styles
paragraph_styles = [
s for s in styles if s.type == WD_STYLE_TYPE.PARAGRAPH
]
for style in paragraph_styles:
print(style.name)
document.add_paragraph('Fragebogen (TODO Import)', style='Überschrift-Anhang 1')
document.add_paragraph('Fragen zur Verzwergung', style='Überschrift-Anhang 2')
document.add_paragraph('Hoffnungslosigkeit', style='Überschrift-Anhang 3')
document.add_paragraph('Ich könnte mir jeden Tag die Kugel geben', style='Fragebogen-Item')
table = document.add_table(rows=3, cols=6)
labels = ['niemals','vielleicht','manchmal','immer', 'sowieso']
for r in table.rows:
for c in r.cells:
c.paragraphs[0].style = 'Frabebogen-Wert'
for c in range(1,6):
table.cell(0,c).paragraphs[0].text = labels[c-1]
table.cell(1,c).paragraphs[0].text = '□'
table.cell(2,c).paragraphs[0].text = '□'
table.cell(1,0).paragraphs[0].text = "IST"
table.cell(2,0).paragraphs[0].text = "SOLL"
document.save('Mist.docx')