python代码块截取,操作txt文本进行字段解析生成word文档

首先需要创建一个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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值