Excel数据转变为word,及word转PDF
疫情期间,公司第一次接手核酸及抗体检测项目,遂写脚本出具报告。
平台为win10,Python版本用3.6+即可,需要的几个包分别为
xlrd
pandas
python-docx
其中xlrd需要版本为1.2.0,若使用最新版本,会出现读不出xls的报错。
安装命令为:
pip install xlrd == 1.2.0
pip install pandas
pip install python-docx
确认报告模板
安装好环境后,根据国家卫健委的要求生成具有自家医检所标识的报告模板。
先根据模板调整好格式后,发现报告模板中由上中下三个表格构成,并找到需要填入的项生成电子表格。
代码如下:
#!/usr/bin/env python
# coding: utf-8
# # !/usr/bin/env python
# # coding: utf-8
# In[22]:
import docx
import pandas as pd
from docx.oxml.ns import qn
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
# In[23]:
name_list = pd.read_excel('C:/Users/cjs/Desktop/新冠结果汇总.xlsx')
name_list['身份证号'] = name_list['身份证号'].apply(str)
name_list['报告单号'] = name_list['报告单号'].apply(str)
name_list = name_list.dropna()
name_list['样本编号'] = name_list['样本编号'].apply(str)
name_list['联系电话'] = name_list['联系电话'].apply(int)
name_list['联系电话'] = name_list['联系电话'].apply(str)
# In[24]:
file=docx.Document('D:/jupyter/新模板.docx')
r_par = file.paragraphs
r_tab = file.tables
# In[25]:
for rec in name_list.values:
r_tab[0].rows[0].cells[1].text = ''
run000 = r_tab[0].cell(0,1).paragraphs[0].add_run('姓名:' + str(rec[3]))
r_tab[0].cell(0,0).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.LEFT
run000.font.size = docx.shared.Pt(12)
run000.font.name = '宋体'
run000