IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python_自动化办公室 -> 正文阅读

[Python知识库]python_自动化办公室

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
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)

# 练习1:获取整个表中所有的单元格中的内容
for row in range(1, sheet1.max_row + 1):
    for col in range(1, sheet1.max_column+1):
        print(sheet1.cell(row, col).value, end=' ')
    print()

# 练习: 获取第2行所有内容
for col in range(1, sheet1.max_column+1):
    print(sheet1.cell(2, col))

# 练习:获取第3列所有内容
for row in range(1, sheet1.max_row+1):
    print(sheet1.cell(row, 3))

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('学生表', 0)

# 2)删除表:工作簿对象.remove(表对象)
try:
    wb.remove(wb['老师表'])
except KeyError:
    pass

# 3)修改表的表名: 表对象.title = 新的表名
if 'Sheet' in wb.sheetnames:
    wb['Sheet'].title = '课程表'


# 4. 修改单元格中的内容
# 表对象['列号行号'] = 数据
# 单元格对象.value = 数据

# sheet1 = wb.active
# sheet1['A1'] = '姓名'
# sheet1['B1'] = '年龄'
# sheet1['A1'] = ''

# sheet1.cell(1, 2).value = 'Age'
# print(sheet1.cell(1, 2).value)

# 练习:将列表中所有的数据添加到课程表的第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')

3.CSV文件操作

import csv

# 1. 创建文件对应的reader对象
# 1)
# csv.reader(文件对象)      -      读数据的时候每一行内容对应一个列表(返回值是包含文件每行内容的的迭代器)
# csv.DictReader(文件对象)   -     读数据的时候每一行内容对应一个字典(返回值是包含文件每行内容的的迭代器)
f = open('files/2018年北京积分落户数据.csv', encoding='utf-8')
# reader = csv.reader(f)
reader = csv.DictReader(f)

# 2) 通过reader读数据
print(next(reader))
print(next(reader))

# 2. 创建文件对应的writer对象
# 1)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,'男'],
    ['小花', 20, 92, '女'],
    ['老王', 30, 80, '男']
])

# 2) csv.DictWriter(文件对象)
f = open('files/test2.csv', 'w', encoding='utf-8')
writer = csv.DictWriter(f, ['name', 'age', 'score', 'gender'])

# 写数据
writer.writeheader()     # 将原来设定好的字典的键作为第一行内容写入文件
writer.writerow({'name': '小明', 'age': 18, 'score': 100, 'gender': '男'})
writer.writerows([
    {'name': '小花', 'age': 30, 'score': 92, 'gender': '女'},
    {'name': '小红', 'age': 28, 'score': 67, 'gender': '女'},
    {'name': '老王', 'age': 25, 'score': 88, 'gender': '男'}
])

4.练习

import openpyxl, csv


def read_data():
    wb = openpyxl.load_workbook('files/小宝剑大药房.xlsx')
    sheet = wb.active
    m_row = sheet.max_row
    m_col = sheet.max_column
    all_data = []
    for row in range(1, m_row + 1):
        data = []
        for col in range(1, m_col + 1):
            value = sheet.cell(row, col).value
            data.append(value)
        all_data.append(data)
    return all_data


if __name__ == '__main__':
    writer = csv.writer(open('files/小宝剑大药房.csv', 'w', encoding='utf-8'))
    writer.writerows(read_data())

5.pdf文件操作

import PyPDF2, openpyxl

# 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)    # 旋转
# page1.scale(100, 200)       # 缩放
# page1.mergePage(page2)

# 2. 写操作
# 1)创建空的pdf文件对象
# PyPDF2.PdfFileWriter()   -  创建一个空的pdf文件对象
writer1 = PyPDF2.PdfFileWriter()

# 2)添加页面
# writer.addPage(页面对象)  -   指定页
# writer.addBlankPage()    -  添加空白页
writer1.addPage(page0)
writer1.addBlankPage()
writer1.addPage(page1)
writer1.addBlankPage()
writer1.addPage(page2)
writer1.addBlankPage()

# 3)保存pdf文件
f = open('files/test.pdf', 'wb')
writer1.write(f)

6.习题

import PyPDF2

# 1.打开文件
reader1 = PyPDF2.PdfFileReader('files/存储引擎的讲解.pdf')
reader2 = PyPDF2.PdfFileReader('files/HEU_KMS_Activator_v20.0.0用户使用手册.pdf')
writer = PyPDF2.PdfFileWriter()

# 2. 获取总页数
total1 = reader1.getNumPages()
total2 = reader2.getNumPages()

# 3. 依次获取每一页写入新文件
for page_num in range(total1):
    writer.addPage(reader1.getPage(page_num))

for page_num in range(total2):
    writer.addPage(reader2.getPage(page_num))

# 4. 保存文件
f = open('files/test2.pdf', 'wb')
writer.write(f)

7.增加水印

import PyPDF2

# 1. 准备需要添加水印的pdf
reader1 = PyPDF2.PdfFileReader('files/存储引擎的讲解.pdf')
# 2. 准备水印文件
walter_page = PyPDF2.PdfFileReader('files/demo1.pdf').getPage(0)
# 3. 准备空的pdf,用来存放添加完水印的页
new_pdf = PyPDF2.PdfFileWriter()
# 4. 遍历原文件的每页内容,添加水印后添加到空的pdf中
for page_num in range(reader1.getNumPages()):
    # 获取原文件的一页内容
    page = reader1.getPage(page_num)
    # 添加水印
    page.mergePage(walter_page)
    # 将新的页添加到空的pdf中
    new_pdf.addPage(page)
# 5.保存新的pdf文件
f = open('files/test3.pdf', 'wb')
new_pdf.write(f)

8.创建文印文件

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/walter.pdf')

# 2)设置字体
walter_pdf.setFont('Font1', 40)

# 3)设置文字颜色
walter_pdf.setFillColorRGB(1, 0, 0, 1)

# 4)旋转
walter_pdf.rotate(45)

# 5)渲染文字内容
walter_pdf.drawString(200, 100, 'hello world!')

walter_pdf.setFillColorRGB(0, 1, 0, 1)
walter_pdf.setFont('Font2', 40)
walter_pdf.drawString(400, 200, 'hello world!')

# 6)保存
walter_pdf.save()
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章           查看所有文章
加:2021-08-07 21:45:13  更:2021-08-07 21:45:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 11:11:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码