Letar du efter ett sätt att skapa Word-dokument från mallar? Du har kommit till rätt ställe! I det här blogginlägget kommer vi att utforska den bästa lösningen för att generera Word-dokument från mallar med olika typer av datakällor i Python. Lär dig hur du använder fördefinierade mallar för att generera Word-dokument i DOCX-format genom att fylla i platshållare med hjälp av olika datakällor, som XML, JSON eller CSV.
Den här artikeln tar upp följande ämnen:
- Python-bibliotek för att generera Word-dokument från mallar
- Skapa Word-dokument från mall med hjälp av XML-data
- Generera Word-dokument från mall med JSON-data
- Generera Word-dokument med CSV-data i Python
- Python LINQ Reporting Engine
- Gratis resurser
Python-bibliotek för att generera Word-dokument från mallar
Vi kommer att använda LINQ Reporting Engine i Aspose.Words for Python API för att generera Word-dokument från mallar. Denna motor stöder olika taggar för text, bilder, listor, tabeller, hyperlänkar och bokmärken. Vi fyller i Word-dokument som innehåller dessa taggar och fyller dem med data från XML-, JSON- eller CSV-datakällor. Så låt oss börja generera Word-dokument från mallarna med Python.
Installerar Aspose.Words för Python
Du kan ladda ner paketet eller installera API från PyPI med följande pip-kommando i konsolen:
> pip install aspose-words
Skapa Word-dokument från mall med XML-data i Python
För att generera Word-dokumentet från en mall med hjälp av XML-datakällan behöver vi en mallfil och XML-källdata. Vi skapar ett Word-dokument (DOC/DOCX) med följande platshållare som innehåll i malldokumentet:
Name: <<[Name]>>, Age: <<[Age]>>, Date of Birth:
<<[Birth]:"dd.MM.yyyy">>
Children:
<<foreach [in Child]>><<[Child_Text]>>
<</foreach>>"""
Här är XML-datakällan som vi kommer att använda i det här exemplet:
<Person>
<Name>John Doe</Name>
<Age>30</Age>
<Birth>1989-04-01 4:00:00 pm</Birth>
<Child>Ann Doe</Child>
<Child>Charles Doe</Child>
</Person>
Nu kan vi enkelt generera ett Word-dokument från en XML-datakälla genom att följa stegen nedan:
- Ladda Word-mallfilen med hjälp av klassen Document.
- Skapa en instans av klassen XmlDataSource och initiera den med XML-filens sökväg.
- Instantiera ReportingEngine-klassen.
- Anropa metoden ReportingEngine.BuildReport() med mallen, datakällan och datakällans namn.
- Spara det genererade Word-dokumentet med metoden Document.Save().
Följande kodexempel visar hur man genererar ett Word-dokument från en XML-datakälla i Python.
# Detta kodexempel visar hur man genererar ett Word-dokument från en mall med hjälp av XML-datakälla.
# Ladda mallen
doc = aw.Document("D:\\Files\\template.docx")
# Ladda datakällan
data_source = aw.reporting.XmlDataSource("D:\\Files\\data-source.xml")
# Initiera rapporteringsmotorn
engine = aw.reporting.ReportingEngine()
engine.build_report(doc, data_source, "persons");
# Spara dokumentet
doc.save("D:\\Files\\WordFromXML.docx")
Produktion
Generera Word-dokument från mall med JSON-data i Python
För att skapa ett Word-dokument med en JSON-datakälla använder vi följande Word-mall:
<<foreach [in managers]>>Manager: <<[Name]>>
Contracts:
<<foreach [in Contract]>>- <<[Client.Name]>> ($<<[Price]>>)
<</foreach>>
<</foreach>>
Följande skulle vara JSON-datakällan som vi kommer att använda för att fylla i mallen:
[
{
Name: "John Smith",
Contract:
[
{
Client:
{
Name: "A Company"
},
Price: 1200000
},
{
Client:
{
Name: "B Ltd."
},
Price: 750000
},
{
Client:
{
Name: "C & D"
},
Price: 350000
}
]
},
{
Name: "Tony Anderson",
Contract:
[
{
Client:
{
Name: "E Corp."
},
Price: 650000
},
{
Client:
{
Name: "F & Partners"
},
Price: 550000
}
]
},
]
Vi kan enkelt generera Word-dokumentet från en JSON-datakälla genom att följa stegen som nämnts tidigare. Vi kommer dock att använda klassen JsonDataSource för att ladda och använda JSON-datakällan i steg 2.
Följande kodexempel visar hur man genererar ett Word-dokument från mallen med JSON i Python.
# Det här kodexemplet visar hur man genererar ett Word-dokument från en mall med JSON-datakälla.
# Ladda mallen
doc = aw.Document("D:\\Files\\template-json.docx")
# Ladda datakällan
data_source = aw.reporting.JsonDataSource("D:\\Files\\data-source.json")
# Initiera rapporteringsmotorn
engine = aw.reporting.ReportingEngine()
engine.build_report(doc, data_source, "managers");
# Spara dokumentet
doc.save("D:\\Files\\WordFromJSON.docx")
Produktion
Generera Word-dokument med CSV-data i Python
För att skapa Word-dokumentet från CSV använder vi följande Word-mall:
<<foreach [in persons]>>Name: <<[Column1]>>, Age: <<[Column2]>>, Date of Birth: <<[Column3]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.Average(p => p.Column2)]>>
Mallen kommer att fyllas i med följande CSV-data:
John Doe,30,1989-04-01 4:00:00 pm
Jane Doe,27,1992-01-31 07:00:00 am
John Smith,51,1968-03-08 1:00:00 pm
Nu kan vi generera Word-dokumentet från CSV-datakällan genom att följa stegen som nämnts tidigare. Vi kommer dock att använda klassen CsvDataSource för att ladda och använda CSV-datakällan i steg 2.
Följande kodexempel visar hur man genererar ett Word-dokument från en CSV-datakälla i Python.
# Det här kodexemplet visar hur man genererar ett Word-dokument från en mall med JSON-datakälla.
# Ladda mallen
doc = aw.Document("D:\\Files\\template-csv.docx")
# Ladda datakällan
data_source = aw.reporting.CsvDataSource("D:\\Files\\data-source.csv")
# Initiera rapporteringsmotorn
engine = aw.reporting.ReportingEngine()
engine.build_report(doc, data_source, "persons");
# Spara dokumentet
doc.save("D:\\Files\\WordFromCSV.docx")
Produktion
Skaffa en gratis licens
Du kan få en gratis tillfällig licens och generera Word-dokument utan utvärderingsbegränsningar.
Python LINQ Reporting Engine - Läs mer
LINQ Reporting Engine stöder ett brett utbud av taggar för att generera fullfjädrade Word-dokument dynamiskt i Python. Du kan läsa mer om dessa taggar, tillsammans med deras syntax, i denna artikel.
Python Generera Word-dokument från mall – Gratis resurser
Förutom att skapa Word-dokument från mallar kan du lära dig mer om att skapa, manipulera och konvertera Word-dokument och utforska olika andra funktioner i biblioteket med hjälp av resurserna nedan:
Slutsats
I den här artikeln har vi lärt oss hur man genererar Word-dokument från mallar i Python. Vi har också sett hur man använder XML-, JSON- och CSV-datakällor för att generera Word-dokument. Genom att utnyttja Aspose.Words för Python LINQ Reporting Engine kan du enkelt generera olika typer av Word-dokument. I händelse av oklarheter är du välkommen att kontakta oss på vårt gratis supportforum.