Python 使用DocxTemplate模板实现将数据写入word中

文章介绍了如何利用Python库docxTemplate来创建和填充DOCX模板,包括设置单个和循环标签内容,以及填充表格的方法,展示了如何高效地处理文档自动化生成。
摘要由CSDN通过智能技术生成

我们需要先设置好模板,将需要填写内容的地方打上标签,后续可以docxTemplate快速大量填入。其中一种类型如下图:
image

1.需要导入的库

from docxtpl import DocxTemplate

3.获取模板对象

tpl = DocxTemplate('test2.docx')

4.填充单个标签内容

使用{{}}标签表示。
image
代码如下:

# 设置好各标签需要填写的内容
context = {'course_name': '计算机科学与技术', 'course_id': '2022050513'}
# 将标签内容填入模板中
tpl.render(context)
# 保存
tpl.save('new_test2.docx')

效果如下:
填充的样式将会和模板标签的样式一样。
image

5.填充循环标签内容

使用{{%p %}} {{%p endfor %}}标签表示。循环还可以嵌套使用(在“6.填充表格标签内容”有演示)。
image
代码如下:

# 设置好循环内容
context = {'paragraphs': ['课程目标1', '课程目标2', '课程目标3']}
# 将标签内容填入模板中
tpl.render(context)
# 保存
tpl.save('new_test2.docx')

效果如下:
image

6.填充表格标签内容

使用{{%tc %}} {{%tc endfor %}}标签表格左右循环,使用{{%tr %}} {{%tr endfor %}}标签表格上下循环。循环还可以嵌套使用。
image
代码如下:

# 设置好循环内容
context = {'user_labels1': ['课程目标1', '课程目标2', '课程目标3'],
           'user_list1': [{'number': '章节1', 'cols': ['H', 'L', 'L']},
                          {'number': '章节2', 'cols': ['L', 'H', 'L']},
                          {'number': '章节3', 'cols': ['L', 'L', 'H']}]
           }
# 将标签内容填入模板中
tpl.render(context)
# 保存
tpl.save('new_test2.docx')

效果如下:
image

  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,以下是一个简单的使用Python语言继承RichSinkFunction将数据写入外部系统的示例代码: ```python from pyflink.common.serialization import SimpleStringEncoder from pyflink.common.serialization import SimpleStringSchema from pyflink.common.typeinfo import Types from pyflink.datastream import StreamExecutionEnvironment from pyflink.datastream.connectors import FlinkKafkaProducer from pyflink.datastream.functions import RichSinkFunction from pyflink.datastream import StreamExecutionEnvironment, CheckpointingMode class MySinkFunction(RichSinkFunction): def open(self, function_context): # 进行一些初始化工作,例如建立连接等等 pass def invoke(self, value, context): # 将数据写入外部系统 pass def close(self): # 进行一些清理工作,例如关闭连接等等 pass # 创建StreamExecutionEnvironment env = StreamExecutionEnvironment.get_execution_environment() env.set_parallelism(1) # 从数据源获取数据流 data_stream = ... # 将数据写入外部系统,例如Kafka kafka_producer = FlinkKafkaProducer( "localhost:9092", "my-topic", serialization_schema=SimpleStringSchema(), producer_config={ "bootstrap.servers": "localhost:9092", "acks": "all" } ) data_stream.add_sink(kafka_producer) # 执行任务 env.execute("My Flink job") ``` 在这个示例,我们自定义了一个名为MySinkFunction的类,继承了RichSinkFunction类,并实现了其的open()、invoke()和close()方法。在open()方法,我们可以进行一些初始化工作,例如建立连接等等;在invoke()方法,我们可以将数据写入外部系统;在close()方法,我们可以进行一些清理工作,例如关闭连接等等。 然后,我们通过FlinkKafkaProducer将数据写入Kafka。最后,我们调用env.execute()方法来执行任务。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值