python写入word表格_python-docx编辑word表格

一、修改数据类型(中英)

需求:

1383841-20190220154257918-847958095.png

代码:

#-*-coding:gbk*-

import os

import docx

#from docx.enum.table import WD_TABLE_ALIGNMENT

from docx.enum.text import WD_ALIGN_PARAGRAPH

filepath = r'f:/1/'

def main():

docxlist = os.listdir(filepath)

for mydocx in docxlist:

newdocx = docx.Document(filepath + str(mydocx))

#newdocx.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER

table = newdocx.tables

for oTable in table:

rows_num = len(oTable.rows)

columns_num = len(oTable.columns)

if columns_num >= 5:

for j in range(rows_num):

#English -> Chinese

ostring = oTable.cell(j, 3).text

oTable.cell(j, 4).paragraphs[0].paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER

if ostring == 'TIMESTAMP':

oTable.cell(j, 3).text = ostring.replace("TIMESTAMP", "时间戳")

oTable.cell(j, 4).text = ""

elif ostring == 'VARCHAR2':

oTable.cell(j, 3).text = ostring.replace("VARCHAR2", "字符串")

if ostring == 'DATE':

oTable.cell(j, 3).text = ostring.replace("DATE", "日期")

oTable.cell(j, 4).text = ""

elif ostring == 'NUMBER':

oTable.cell(j, 3).text = ostring.replace("NUMBER", "整数")

elif ostring == 'FLOAT':

oTable.cell(j, 3).text = ostring.replace("FLOAT", "小数")

#oTable.alignment = WD_TABLE_ALIGNMENT.CENTER

newdocx.save('f:/2/'+ str(mydocx))

if __name__ == '__main__':

main()

二、数据类型为日期时,清空位数内容

需求:

1383841-20190220154028119-292595581.png

代码:

#!/usr/bin/python3

# -*- coding: utf-8 -*-

# @Time : 2019/2/20 14:12

# @File : date_del.py

from docx import Document # 导入库

"""

word表格中

"""

path = "C:\\Users\\1\\Desktop\\福建省质监局标准信息资源目录.docx" # 文件路径

document = Document(path) # 读入文件

tables = document.tables # 获取文件中的表格集

one_cells = []

for table in tables:

rows_num = len(table.rows)

columns_num = len(table.columns)

if rows_num > 2 and columns_num == 4:

for i in range(1, rows_num): # 第二行开始

if table.cell(i, 3).text == '日期' or table.cell(i, 1).text == '日期':

one_cells.append(table.cell(0, 1).text)

for j in range(0, columns_num):

if table.cell(0, 1).text in one_cells:

if table.cell(i, j).text == '位数':

table.cell(i, j + 1).text = ''

document.save("C:\\Users\\1\\Desktop\\1\\福建省质监局标准信息资源目录.docx")

# 校验修改内容

for i in one_cells:

print(i)

三、表格中添加单元格

需求:

1383841-20190225161906953-1925928810.png

参考:https://www.jianshu.com/p/9da61bf35cb7

代码:

#!/usr/bin/python3

# -*- coding: utf-8 -*-

# @Time : 2019/2/25 9:52

# @File : table_add_cell.py

from docx import Document

from docx.enum.text import WD_ALIGN_PARAGRAPH

from docx.oxml.ns import qn

from docx.shared import Pt

"""

word表格,添加一个单元格以及内容

"""

path = "C:\\Users\\1\\Desktop\\成都市质量技术监督局标准层信息资源目录.docx" # 文件路径

document = Document(path) # 读入文件

# 设置字体为: 宋体

document.styles['Normal'].font.name = u'宋体'

document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')

tables = document.tables # 获取文件中的tables

# 被修改表格的列表

one_cells = []

def match_table():

"""

遍历文档匹配满足条件的表格

:return:

"""

for table in tables:

rows_num = len(table.rows)

columns_num = len(table.columns)

if rows_num > 2 and columns_num == 4:

one_text = table.cell(0, 1).text

if len(one_text) == 29:

one_cells.append(one_text)

end_text = table.cell(rows_num - 1, columns_num - 1).text

if end_text:

# 添加一行

table.add_row()

set_font(table, 5, 0)

else:

set_font(table, rows_num - 1, columns_num - 2)

document.save("C:\\Users\\1\\Desktop\\1\\python_word_table_add_cell.docx")

def set_font(table, a, b):

"""

设置表格字体样式

:param table: 表格

:param a: 行坐标

:param b: 列坐标

:return:

"""

run = table.cell(a, b).paragraphs[0].add_run(u'信息资源生产格式') # 内容为:信息资源生产格式

run.bold = True # 加粗

run.font.size = Pt(9) # 字体大小:小五-9

table.cell(a, b).paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER # 居中

run1 = table.cell(a, b + 1).paragraphs[0].add_run(u'ORACLE')

run1.font.size = Pt(9)

table.cell(a, b + 1).paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER

def check_data():

# 校验修改内容

for i in one_cells:

print(i)

if __name__ == '__main__':

match_table()

check_data()

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值