【script】python3中的docx、win32com和openpyxl模块

docx模块:对word文档的处理

读取docx文件

from docx import Document   # word处理模块

path = r"C:\Users\30797\Desktop\python\docx.docx"
document = Document(path)   # 读取docx文件

处理段落(paragraphs)

1、遍历输出段落

paragraphs = document.paragraphs
for paragraph in paragraphs:    # 遍历所有段落
    print(paragraph.text)

2、读取第二段样式

runs = paragraphs[1].runs    # 读取第二段所有样式
for run in runs:    # 遍历输出所有样式
    print(run.text)

3、将 "Jan 1 2020" 改为 "Jan 1 2021" 并且不改变样式。由上可知,"Jan 1 2020" 的样式为 "runs[3]" ,所以代码如下:

runs[3].text = "Jan 1 2021" # 更改日期内容且不改变样式
document.save(path) # 保存更改

注:"paragraphs[1].text = "Date:Jan 1 2021" 也能更改内容,但不同的是它将会改变样式

4、增加一段

document.add_paragraph("End")   # 增加一段
document.save(path) # 保存更改

处理表格(tables)

1、遍历输出表格

tables = document.tables
for table in tables:    # 遍历所有表格
    for row in range(len(table.rows)):  # 遍历行
        for col in range(len(table.columns)):  # 遍历列
            print(table.cell(row, col).text, end=' ')    # 输出每格的内容
        print()

2、将 "2020" 改为 "2021" 并且不改变样式

tables[0].cell(1, 2).paragraphs[0].runs[0].text = "2021"    # 2020的位置为第1个表格,第2行第3列,段落1,样式1
document.save(path) # 保存更改

win32com模块:直接操作office软件

from win32com.client import Dispatch, constants

w = Dispatch('Word.Application')
# 或者使用下面的方法,使用启动独立的进程:
# w = DispatchEx('Word.Application')

# 后台运行,不显示,不警告
w.Visible = 0
w.DisplayAlerts = 0

# 打开新的文件
doc = w.Documents.Open( FileName = filenamein )
# worddoc = w.Documents.Add() # 创建新的文档

# 插入文字
myRange = doc.Range(0,0)
myRange.InsertBefore('Hello from Python!')

# 使用样式
wordSel = myRange.Select()
wordSel.Style = constants.wdStyleHeading1

# 正文文字替换
w.Selection.Find.ClearFormatting()
w.Selection.Find.Replacement.ClearFormatting()
w.Selection.Find.Execute(OldStr, False, False, False, False, False, True, 1, True, NewStr, 2)

# 页眉文字替换
w.ActiveDocument.Sections[0].Headers[0].Range.Find.ClearFormatting()
w.ActiveDocument.Sections[0].Headers[0].Range.Find.Replacement.ClearFormatting()
w.ActiveDocument.Sections[0].Headers[0].Range.Find.Execute(OldStr, False, False, False, False, False, True, 1, False, NewStr, 2)

# 表格操作
doc.Tables[0].Rows[0].Cells[0].Range.Text ='123123'
worddoc.Tables[0].Rows.Add() # 增加一行

# 转换为html
wc = win32com.client.constants
w.ActiveDocument.WebOptions.RelyOnCSS = 1
w.ActiveDocument.WebOptions.OptimizeForBrowser = 1
w.ActiveDocument.WebOptions.BrowserLevel = 0 # constants.wdBrowserLevelV4
w.ActiveDocument.WebOptions.OrganizeInFolder = 0
w.ActiveDocument.WebOptions.UseLongFileNames = 1
w.ActiveDocument.WebOptions.RelyOnVML = 0
w.ActiveDocument.WebOptions.AllowPNG = 1
w.ActiveDocument.SaveAs( FileName = filenameout, FileFormat = wc.wdFormatHTML )

# 打印
doc.PrintOut()

# 关闭
# doc.Close()
w.Documents.Close(wc.wdDoNotSaveChanges)
w.Quit()

openpyxl模块:对excel文档的处理

功能方法
创建工作薄wb = openpyxl.Workbook() 
打开工作簿wb = openpyxl.load_workbook('c:\name.xlsx')
获取所有表名wb.sheetnames
按表名选取表单sh = wb['sheet_name']
按序号选取表单sh = wb[wb.sheetnames[0]]
新增表单wb.create_sheet('sheet_name')
复制表单sh_copy=wb.copy_worksheet(sh_source)
删除表单wb.remove(wb['sheet_name'])
更改表名sh_copy.title = 'change_name'
读取第一行、第一列的数据(推荐)ce = sh.cell(row = 1,column = 1).value
写入第一行、第四列的数据value = 'hello' sh.cell(row = 1,column = 4,value = 'hello')
按行读取数据row_data = list(sh.rows)
按列读取数据columns_data = list(sh.columns)
获取最大行总数、最大列总数sh.max_row、sh.max_column
保存工作薄wb.save('c:\name.xlsx')
关闭工作薄wb.close() 
from openpyxl import load_workbook, comments

# 加载、读取excel溥
workbook = load_workbook(path)

# 读取表格
sheet = workbook['Sheetname']

# 表最大行、列数
row = sheet.max_row
column = sheet.max_column

# 读取x行、y列单元格的值
value = sheet.cell(x, y).value

# 为x行、y列单元格添加注释
sheet.cell(x, y).comment = comments.Comment('Content', 'Auther')

# 保存工作溥
workbook.save(path)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值