使用扩展库openpyxl:读写Excel操作
第一步导入扩展库,引用库里的包:
import openpyxl
from openpyxl import Workbook
第二步创建excel文件:
fn='extest.xlsx'
wb=Workbook()#创建工作簿
ws=wb.create_sheet(title='工作表1')#创建工作表,并命名
ws['a1']='1223'#给单元格a1赋值
ws['b1']=3.14 #给单元格b1赋值
wb.save(fn)#保存excel文件
第三步使用已有excel文件:
注:使用文件时,要关闭文件,才能正常使用
打开文件,并创建wb对象,为了使用工作表
wb=openpyxl.load_workbook('extest.xlsx')
打开指定索引工作表,并创建对象,使用单元格
ws=wb.worksheets[1]
注:这里的1用的是第几个工作表,从0开始
读取单元格
# 读取工作表中的单元格
print(ws['a1'].value)
# 添加一行数据
ws.append([1,2,3,4])
# 合并单元格
ws.merge_cells('f2:f3')
# 写入公式
ws['f2']="=sum(a2:e2)"
# 写入单元格数据
ws.cell(10,3,5)
wb.save('extest.xlsx')
注:.value是不给提示的,需要手动输入 ; ws.cell(行,列,值) ,使用完一定要保存
使用扩展库python-docx:读写Word操作
第一步导入python-docx扩展库:
import docx
import re
from docx import Document
第二步创建文档对象并保存:(word.docx文档创建成功)
doc=docx.Document('word.docx')
doc.save('word.docx')
第三步使用已有文档读与写:
word中写操作:(这里只介绍几个常用的,其他的我也不会。想知道,找度娘吧!她什么都知道哟!)
import docx
import re
from docx import Document
#增加一个人在段落
doc.add_paragraph('time')
doc.add_paragraph('汉字')
# 增加一个6行6列的表格,并设置表格样式
table=doc.add_table(rows=6,cols=6,style='Table Grid')
# 该表格中第2行第3列写入内容,下标从0开始
table.cell(1,2).text="第{i}行{j}列"
# 插入图片
doc.add_picture('1.png',width=docx.shared.Inches(5))
# 插入列表(style='List Number'表示有序列表 ,'List Bullet'无序列表)
doc.add_paragraph('还有什么',style='List Number')
doc.add_paragraph('还有什么呀',style='List Number')
doc.save('word.docx')
word中读操作:
1. 读取文本:
import docx
import re
import os
from docx import Document
doc=docx.Document('word.docx')
for p in doc.paragraphs:
t=p.text# 获取每一段文本
# 打印段落
print(t)
2. 读取文本有标志性的字体:(带有颜色的字体,加粗的字体等)
boldText=[]#存加粗的字体
redText=[] #存红色的字体
for p in doc.paragraphs:
for r in p.runs:
# 加粗的字体
if r.bold:
boldText.append(r.text)
if r.font.color.rgb==RGBColor(255,0,0):
redText.append(r.text)
# 打印加粗字体
print(boldText)
# 打印红色字体
print(redText)
注:word文件的结构分为三层:1. Document对象表示整个文档;2. Document包含了 Paragraph对象的列表,每个Paragraph对象用来表示文档中的一个段落;3. Paragraph 对象包含了Run对象的列表,一个Run对象就是style相同的一段文本,遍历word文档的所有段落的所有run对象,根据run对象的属性进行识别和输出
3. 读取表格:
for table in doc.tables: # 遍历所有表格
for row in table.rows: # 遍历表格的所有行
for cell in row.cells:
print(cell.text, "\t")
注:好像word在python中不能直接读取word中的图片,为什么我也不知道,实力不允许呀