day20自动化办公2

本文介绍了如何使用Python的openpyxl库进行Excel文件的读写操作,包括读取工作簿、工作表、单元格内容,以及写入数据。同时,展示了csv模块处理CSV文件的实例,包括读取和写入CSV数据的基本步骤。
摘要由CSDN通过智能技术生成

自动化办公二

一、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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值