自动化办公二
一、excel文件的读写操作
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['Sheet2']
print(sheet2)
# 3.从工作表获取表相关内容
# 1)获取表名:工作表对象.title
print(sheet1.title) # Sheet1
# 2)获取最大行数
print(sheet1.max_row)
# 3)获取最大列数
print(sheet1.max_column)
# 4.通过表获取单元格
# 1)获取指定一个单元格
# a.工作表['列号行号 '] - 获取指定位置对应的单元格(列号是字母)
cell1 = sheet1['A2']
print(cell1)
# b.工作表.cell(行号,列号) - 获取指定位置对应的单元格(列数字是字母)
cell2 = sheet1.cell(2, 1)
# 2)获取单元格的内容
# 单元格对象.value
print(cell1.value)
print(cell2.value)
# 练习:获取整个表中所有的单元格中的内容
hang = sheet1.max_row
lie = sheet1.max_column
for i in range(1, hang+1):
for j in range(1, lie+1):
print(sheet1.cell(i, j).value, end=' ')
print()
# 练习: 获取第2行所有内容
for j in range(1, lie+1):
print(sheet1.cell(2, j).value, end=' ')
print()
# 练习:获取第3列所有内容
for i in range(1, hang+1):
print(sheet1.cell(i, 3).value, end=' ')
2.写excel文件
import openpyxl
import os
# 注意:excel所有的写操作,如果要有效必须完成后对excel文件对应的工作簿进行保存操作。
# 1.新建工作簿
if os.path.exists('files/test.xlsx'):
print('打开')
wb = openpyxl.load_workbook('files/test.xlsx')
else:
print('新建')
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('学生表')
# 2)删除表:表对象.remove(表对象['表名'])
# wb.remove(wb['学生表'])
# 3)修改表名:表对象.title = 新的表名
if '老师表' in wb.sheetnames:
wb['老师表'].title = '课程表'
# 4)修改单元格的内容
# 表对象['行号列号'] = 数据
# 单元格对象.value = 数据
sheet1 = wb.active
print(sheet1)
sheet1['A1'] = 'ddd'
# sheet1['B1'] = 'ddd'
# sheet1['A1'] = ''
#
sheet1.cell(1, 2).value = 'age'
# 将列表中所有的数据添加到课程表的第3行:['Python', '余婷', '5个月', 10000]
sheet2 = wb['课程表']
list1 = ['Python', '余婷', '5个月', 10000]
for index, item in enumerate(list1):
sheet2.cell(3, index+1).value = item
wb.save('files/test.xlsx')
二、csv文件的读写操作
import csv
import openpyxl
# 1.创建reader对象
# 1)
# csv.reader(文件对象) - 读数据的时候每行内容对应一个列表(返回值是包含文件每行内容的迭代器)
# csv.DictReader(文件对象) - 读数据的时候每行内容对应一个字典(返回值是包含文件每行内容的迭代器)
f = open('files/2018年北京积分落户数据.csv', encoding='utf-8')
# reader = csv.reader(f)
reader1 = csv.DictReader(f)
# 2)通过reader读数据
# print(next(reader))
print(next(reader1))
print(next(reader1))
# 2.创建文件对应的writer对象
# csv.writer(文件对象)
f = open('files/test.csv', 'w', encoding='utf-8')
writer = csv.writer(f)
# 写数据:writer.writerow(列表) - 一次写一行
writer.writerow(['name', 'age', 'score', 'gender'])
writer.writerows([
['小明', 18, 100, '男'],
['小化', 18, 105, '男'],
['小王', 18, 90, '男']
])
# csv.DicWriter(文件对象)
f = open('files/test.csv', 'w', encoding='utf-8')
writer = csv.DictWriter(f, ['name', 'age', 'score', 'gender'])
# 写数据
writer.writeheader() # 将原来设定好的字典的键作为第一行内容写入文件
writer.writerow({'name': '小明', 'age': 18, 'score': 56, 'gender': '男'})
writer.writerows([
{'name': '小明', 'age': 18, 'score': 56, 'gender': '男'},
{'name': '小桑', 'age': 18, 'score': 66, 'gender': '男'},
{'name': '小范', 'age': 18, 'score': 76, 'gender': '男'}
])
# 打开要写入的csv文件
f = open('files/test.csv', 'w', encoding='utf-8', newline='')
writer = csv.writer(f)
# 打开要读入的xlsx文件
wb = openpyxl.load_workbook('files/小宝剑大药房.xlsx')
sheet1 = wb.active
hang = sheet1.max_row
lie = sheet1.max_column
for i in range(1, hang+1):
num = []
for j in range(1, lie+1):
num.append(sheet1.cell(i, j).value)
writer.writerow(num)
三、pdf文件的相关操作
import PyPDF2
# 1.读操作 - 获取pdf文件内容
# 1)以读的的方式打开pdf文件
reader = PyPDF2.PdfFileReader('files/HEU_KMS_Activator_v20.0.0用户使用手册.pdf')
# 2)获取总的页数
total_page = reader.getNumPages()
print(total_page)
# 3)获取指定页面 (PageObject的对象)
# reader.getPage(页面)
page0 = reader.getPage(0)
page1 = reader.getPage(1)
page2 = reader.getPage(2)
page3 = page1.rotateClockwise(90) # 旋转
# page4 = page1.scale(100, 200) # 缩放
# page1.mergePage(page2) # 重合
# 2.写操作
# 1)创建空的pdf文件对象
# PyPDF2.PdfFileWriter() - 创建一个空的pdf文件对象
writer1 = PyPDF2.PdfFileWriter()
# 2)添加页面
# writer1.addPage() -
writer1.addPage(page0)
writer1.addBlankPage()
writer1.addPage(page1)
writer1.addBlankPage()
writer1.addPage(page2)
writer1.addBlankPage()
writer1.addPage(page3)
writer1.addBlankPage()
# 3)保存pdf文件
f = open('files/test.pdf', 'wb')
writer1.write(f)
练习拼接两个pdf文件:
import PyPDF2
# 1.打开文件
reader1 = PyPDF2.PdfFileReader('files/day2 Python编程入门作业.pdf')
reader2 = PyPDF2.PdfFileReader('files/HEU_KMS_Activator_v20.0.0用户使用手册.pdf')
writer = PyPDF2.PdfFileWriter()
# 2.获取总页数
total1 = reader1.getNumPages()
total2 = reader2.getNumPages()
for page_num in range(total1):
writer.addPage(reader1.getPage(page_num))
for page_num in range(total2):
writer.addPage(reader2.getPage(page_num))
# 3)保存pdf文件
f = open('files/test.pdf', 'wb')
writer.write(f)
四、pdf文件添加水印
import PyPDF2
# 1.打开文件
reader1 = PyPDF2.PdfFileReader('files/day2 Python编程入门作业.pdf')
reader2 = PyPDF2.PdfFileReader('files/HEU_KMS_Activator_v20.0.0用户使用手册.pdf')
writer = PyPDF2.PdfFileWriter()
# 2.获取总页数
total1 = reader1.getNumPages()
total2 = reader2.getNumPages()
for page_num in range(total1):
writer.addPage(reader1.getPage(page_num))
for page_num in range(total2):
writer.addPage(reader2.getPage(page_num))
# 3)保存pdf文件
f = open('files/test.pdf', 'wb')
writer.write(f)