首先需要创建一个txt文本:文本格式如下valueToReturn.addField(new TableField("unid", DataType.String, 50, "标识", true, true)); valueToReturn.addField(new TableField("sjunid", DataType.String, 50, "原数据标识")); valueToReturn.addField(new TableField("zxsj", DataType.String, 50, "数据交换执行时间")); valueToReturn.addField(new TableField("zxrunid", DataType.String, 50, "执行人unid")); valueToReturn.addField(new TableField("zxrfullname", DataType.String, 300, "执行人fullname")); valueToReturn.addField(new TableField("zxrip", DataType.String, 50, "执行人ip地址"));
然后docx文件跟自己的py文件最好同级目录
#coding=utf-8
from docx import Document
from docx.oxml.ns import qn
from docx.shared import Pt
from docx.shared import Inches
import docx
from urllib3.connectionpool import xrange
#操作word文档
path_model=r'测试word.docx'
# document = docx.Document(path_model)
document = Document()
# 增加表格
table = document.add_table(rows=1, cols=5, style='Table Grid')
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '字段名称'
hdr_cells[1].text = '字段名称'
hdr_cells[2].text = '字段类型'
hdr_cells[3].text = '是否为空'
hdr_cells[4].text = '说明'
# #设置字体
# run = table.add_run('Set Font,')
# run.font.name = '仿宋GB_2312'
# #设置中文字体
# run = table.add_run(u'设置中文字体、')
# run.font.name=u'宋体'
# r = run._element
# r.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋GB_2312')
filename = r'D:\\数据库读取.txt' # txt文件和当前脚本在同一目录下,所以不用写具体路径
pos,i = {},1
with open(filename, 'r',encoding='utf-8') as file_to_read:
while True:
# 读取整行数据
lines = file_to_read.readline()# 整行读取数据
pos[i]=lines
i+=1
if not lines:
break
pass
pass
for k in range(pos.__len__()-1): #进行循环读取
str=pos[k+1][38:-2] #进行数据的第一次过滤,截取从第39位开始到倒数第三位数字,对数字进行过滤
list1=str.split(",",5) #根据逗号进行二次拆分,将数据拆分成5个链表
if list1.__len__()<5: #如果字段中只有四个字段,有的有六个字段,统一变成6个字段
for i in range(2): #那么给当前数据加上两个字段,统一变成6个字段
list1+=[""] #有的字段有6个值,有的只有4个值,统一成6个值
print(list1[3].strip().strip(')')) #去掉第四个值后缀括号
row_cells = table.add_row().cells #往word中开始添加数据
row_cells[0].text=eval(list1[3].strip().strip(')')) #去掉"",并且往表格中添加值第4个值
row_cells[1].text = eval(list1[0]) #去掉"",并且往表格中添加值第1个值
if list1[1].strip()=="DataType.String": #如果第二个值等于DataType.String,往表格中添加第二个值varchar()
row_cells[2].text = "varchar("+list1[2]+")"
elif list1[1].strip()=="DataType.Int":
row_cells[2].text = "Int"
if list1[4].strip()!="":
row_cells[4].text = "主键"
row_cells[3].text = "不允许为空"
pass
document.save(path_model)