Python 提供了强大的工具集进行数据统计分析,从基础描述性统计到高级建模分析。 数据的统计分析是每个人都处理过得问题, 将统计分析的结果形成一份漂亮的报告才是根本目的, 在报告内使用数据会更加美观、更有说服力。
先实现第一个解决思路,不考虑位置的数据插入, 假如向一个表格内插入十条数据,需要先准备好数据,
excel表内数据内容如下:
创建一个10行7列的表格:
from openpyxl import load_workbook
from docx import Document
创建一个空docx文档:
doc = Document()
doc.add_heading('文档标题', 0)
doc.add_paragraph('这是一个段落。')
doc.save('xx_d_mod.docx')
word = Document('xx_d_mod.docx')
table1 = word.add_table(10,7)
word.save('xx_d_mod.docx')
这会添加一个10行7列的表格,表格样式为None。
读取excel内容,插入文档的表格内。 以下代码为旧版本用法,后续都使用新版本处理:
excel = load_workbook('/data/demo/e_mod.xlsx')
ws = excel.active
sheet=excel.get_sheet_by_name('Sheet1')
/tmp/ipykernel_3463/2550834408.py:3: DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]). sheet=excel.get_sheet_by_name('Sheet1')
向表格内插入数据:
for i in range(0,10):
table1.cell(i,0).text=str(ws.cell(row=(i+1), column=1).value)
table1.cell(i,1).text=str(ws.cell(row=(i+1), column=2).value)
table1.cell(i,2).text=str(ws.cell(row=(i+1), column=3).value)
table1.cell(i,3).text=str(ws.cell(row=(i+1), column=4).value)
table1.cell(i,4).text=str(ws.cell(row=(i+1), column=5).value)
table1.cell(i,5).text=str(ws.cell(row=(i+1), column=6).value)
table1.cell(i,6).text=str(ws.cell(row=(i+1), column=7).value)
word.save('xx_d_mod.docx')
结果如下:
实现第二个思路,即考虑数据要插入的位置,这与上一个实例有一些相似之处, 需要一个占位符作为目标,最后将占位符替换掉。
创建一个空docx文档:
doc = Document()
doc.add_heading('文档标题', 0)
doc.add_paragraph('这是一个段落。')
doc.save('xx_tmpl.docx')
tmpl = Document('xx_tmpl.docx')
paras = tmpl.paragraphs
获取数据直接写入docx文档内,在文档内使用 { }
的形式作为占位标志,使用时可以重新定义。
for row in range(4,10):
pa1 = paras[0]
pa2 = paras[1]
pa1.text = pa1.text.replace('{a}', str(ws.cell(row=row, column=2).value))
pa2.text = pa2.text.replace('{c}', str(ws.cell(row=row, column=4).value))
word.add_paragraph(pa1.text, pa1.style)
word.add_paragraph(pa2.text, pa2.style)
保存为新文件。
word.save('xx_tmpl.docx')
如果word
内有多个表格,可以进行表里获取,模板里只用了一个表格,
如果想操作第二个表格,可以再次声明一个table
。
tabel = word.tables[1]
这样可以获取到所有的表格。