python自动化办公excel和pdf和csv文件
1.excel文件的读操作import openpyxl# 1.加载文件(只能加载后缀是.xlsx文件)wb = openpyxl.load_workbook('files/小宝剑大药房.xlsx')# 2.从工作簿中获取工作表相关信息# 1)获取所有工作表的表名names = wb.sheetnamesprint(names)# 2)获取活跃表sheet1 = wb.activeprint(sh
·
1.excel文件的读操作
import openpyxl
# 1.加载文件(只能加载后缀是.xlsx文件)
wb = openpyxl.load_workbook('files/小宝剑大药房.xlsx')
# 2.从工作簿中获取工作表相关信息
# 1)获取所有工作表的表名
names = wb.sheetnames
print(names)
# 2)获取活跃表
sheet1 = wb.active
print(sheet1)
# 3)根据表名获取指定表
sheet2 = wb['Sheet1']
print(sheet2)
# 3.从工作表中获取相关内容
# 1)获取表名:工作表对象.title #'Sheet1'
print(sheet1.title)
# 2)获取最大行数
print(sheet1.max_row)
# 3)获取最大列数
print(sheet1.max_column)
# 通过表获取单元格
# 1)获取指定一个单元格
# a.工作表['列号行号'] - 获取指定位置对应单元格(列号是字母)
cell1 = sheet1['B2']
print(cell1)
# b.工作表.cell(行号,列号) - 获取指定位置对应的单元格(列号是数字)
cell2 = sheet1.cell(2,2)
# 2)获取单元格内容
# a.单元格对象.value
print(cell1.value)
print(cell2.value)
# 练习:获取整个表中所有的单元格中的内容
for i in range(1, sheet1.max_row+1):
for j in range(1, sheet1.max_column+1):
cell3 = sheet1.cell(i, j)
print(cell3.value,end=' ')
print()
# 练习:获取第二行所有内容
for j in range(1, sheet1.max_column+1):
cell3 = sheet1.cell(2, j)
print(cell3.value,end=' ')
# 练习:获取第三列所有内容
for i in range(1, sheet1.max_row+1):
cell3 = sheet1.cell(i, 3)
print(cell3.value,end=' ')
2.excel 文件的写操作
import openpyxl
import os
# 注意:excel 所有的写操作,如果有效必须在操作完成后对Excel文件对应的工作簿进行保存操作
# 1.新建工作簿
# wb = openpyxl.Workbook()
if os.path.exists('files/test.xlsx'):
print('打开')
wb = openpyxl.load_workbook('files/test.xlsx')
else:
wb = openpyxl.Workbook()
wb.save('files/test.xlsx')
# 2.保存工作簿
# 工作簿对象.save(文件路径)
# wb.save('files/test.xlsx')
# 3.针对表的写操作
# 1)新建表:工作簿对象.create_sheet(表名,位置)
# wb.create_sheet('老师表')
# wb.create_sheet('老师表',0)
# 2)删除表:工作簿最新.remove(表对象)
# try:
# wb.remove(wb['老师表'])
# except:
# pass
# 3)修改表的表名:表对象.title = 新的表名
if 'Sheet' in wb.sheetnames:
wb['Sheet'].title = '课程表'
# wb.save('files/test.xlsx')
# 4.修改单元格中的内容
sheet1 = wb.active
# print(sheet1)
# sheet1['A1'] = '姓名'
# sheet1['B1'] = '年龄'
# sheet1.cell(1,2).value = '姓名'
# wb.save('files/test.xlsx')
# 4.1删除单元格中的内容
# sheet1['B1'] = None
# wb.save('files/test.xlsx')
# 将列表中所有的数据添加到课程表的第3行:['Python', '余婷', '5个月', 10000]
# list1 = ['Python', '余婷','5个月',10000]
# for index, item in enumerate(list1):
# sheet1.cell(3,index+1).value = item
#
# wb.save('files/test.xlsx')
3.csv文件读操作
import csv
# 1.创建reader对象
# 1)
# csv.reader(文件对象) - 读数据的时候每一行内容对应一个列表(返回值是包含文件每行内容的迭代器)
# csv.DictReader(文件对象) - 读数据的时候每一行内容对应一个字典(返回值是包含文件每行内容的迭代器)
f = open('files/douyin.csv', encoding='utf-8')
# reader = csv.reader(f)
reader = csv.DictReader(f)
# 2)通过reader读数据
print(next(reader))
print(next(reader))
f.close()
# 4.csv-写数据
'''
# 2.创建文件对应的writer对象
# 1)csv.writer(文件对象)
f = open('files/test1.csv', 'w', encoding='utf-8')
writer = csv.writer(f)
# 写数据:文件对象.writerow(列表)
writer.writerow(['name','age','score','gender'])
writer.writerows([
['小明',18,100,'男'],
['小花',18,100,'女']
])
# 2)csv.DictWriter(文件对象)
f = open('files/test2.csv','w',encoding='utf-8')
writer = csv.DictWriter(f,['name','age','score','gender'])
writer.writeheader()
writer . writerows([
{'name': '小花','age': 30,'score': 92,'gender':'女'},
{'name': '小红','age': 28,'score': 67,'gender':'女'},
{'name': '老王','age': 25,'score': 88,'gender':'男'}
])
f.close()
5.PDF文件操作
import PyPDF2
# 5.1 - 读操作 - 获取pdf文件内容
# 1) 以读的方式打开pdf文件
# 创建PDF文件对象 - PyPDF2.PdfFileReader(文件路径)
reader = PyPDF2.PdfFileReader('files/python.pdf')
# 2)获取总的页数
# 文件对象.getNumPages()
total_page = reader.getNumPages()
print(total_page)
# 3)获取指定页面(PageObject的对象)
# 文件对象.getPage(页数)
page0 = reader.getPage(0)
page1 = reader.getPage(1)
page2 = reader.getPage(2)
page3 = page1.rotateClockwise(90)
# page4 = page1.scale(100,200)
# 2写操作
# 1)创建一个空的PDF文件对象
# PyPDF2.PdfFileWriter() - 创建一个空的PDF文件对象
write1 = PyPDF2.PdfFileWriter()
# 2)添加页面
# writer.addPage(页面对象) - 指定页
# writer.addBlankPage() - 添加空白页
write1.addPage(page0)
write1.addBlankPage()
write1.addPage(page1)
write1.addBlankPage()
write1.addPage(page2)
write1.addBlankPage()
write1.addPage(page3)
# 3)保存PDF文件
f = open('files/test.pdf','wb')
write1.write(f)
f.close()
PDF文件添加水印
import PyPDF2
# 1.准备需要添加水印的PDF
reader = PyPDF2.PdfFileReader('files/存储引擎的讲解.pdf')
# 2.准备水印文件
walter_page = PyPDF2.PdfFileReader('files/water.pdf').getPage(0)
# 3.准备空的PDF,用来存放添加完水印的页
new_pdf = PyPDF2.PdfFileWriter()
for page_num in range(reader.getNumPages()):
# 获取原文件的页面内容
page = reader.getPage(page_num)
# 添加水印
page.mergePage(walter_page)
# 将添加完水印的页加到空白文档中
new_pdf.addPage(page)
# 5.保存新的PDF文件
f = open('files/存储引擎的讲解水印版.pdf','wb')
new_pdf.write(f)
f.close()
6.创建一个水印的PDF文档
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfgen import canvas
# 1.注册字体文件
pdfmetrics.registerFont(TTFont('Font1','files/Vera.ttf'))
pdfmetrics.registerFont(TTFont('Font2','files/青呱石头体.ttf'))
# 2.生成文字
# 1)创建空的pdf文件
walter_pdf = canvas.Canvas('files/water.pdf')
# 2)设置字体
walter_pdf.setFont('Font1',40)
# 3)设置文字颜色
walter_pdf.setFillColorRGB(1,0,0,1)
# 4)旋转
walter_pdf.rotate(45)
# 5)渲染文字内容
walter_pdf.drawString(400,100,'hello world!')
# 6)保存
walter_pdf.save()
7.Excel文件转CSV文件
import openpyxl
import csv
wb = openpyxl.load_workbook('files/小宝剑大药房.xlsx')
sheet1 = wb.active
big_list = []
for i in range(1, sheet1.max_row+1):
list1 = []
for j in range(1, sheet1.max_column+1):
cell3 = sheet1.cell(i, j)
list1.append(cell3.value)
big_list.append(list1)
f = open('files/test3.csv', 'w', encoding='utf-8')
writer = csv.writer(f)
writer.writerows(big_list)
f.close()
8.合并两个PDF文档
import PyPDF2
reader1 = PyPDF2.PdfFileReader('files/python.pdf')
reader2 = PyPDF2.PdfFileReader('files/demo1.pdf')
total_page1 = reader1.getNumPages()
total_page2 = reader2.getNumPages()
write1 = PyPDF2.PdfFileWriter()
for i in range(total_page1):
page = reader1.getPage(i)
write1.addPage(page)
for i in range(total_page2):
page = reader2.getPage(i)
write1.addPage(page)
f = open('files/合并python和demo1.pdf','wb')
write1.write(f)
f.close()
更多推荐




所有评论(0)