Python办公自动化_Excel篇

库名

作用

xlrd

从excel中读取数据,支持xls,xlsx

xlwt

从excel进行修改操作,不支持对xlsx格式的修改

xlutils

在xlrd和xlwt中,对一个已存在的文件进行修改

openpyxl

主要针对xlsx格式的excel进行读取和编辑

pandas

可对csv进行操作,主要用于大数据分析

安装

安装
1.按 win + R ,输入CMD确定
2.输入 pip install openpyxl
卸载
pip uninstall openpyxl

工作簿

属性

作用

active

获取当前活跃的Worksheet

worksheets

以列表的形式返回所有的Worksheet(表格)

data_only

默认为False,为True时只读取数据不显示公式

read_only

判断是否以read_only模式打开Excel文档

encoding

获取文档的字符集编码

properties

获取文档的元数据,如标题,创建者,创建日期等

sheetnames

获取工作簿中的表(列表)

方法

作用

工作簿.sheetnames

获取所有表格的名称

工作簿['工作表名']

通过表格名称获取Worksheet对象

工作簿.active

获取活跃的表格

remove

删除一个工作表对象【对象】

create_sheet

创建一个空的表格【表名】

copy_worksheet

在Workbook内拷贝表格【对象】

练习

新建100张工作表
import openpyxl as vb
路径 = r'c:/测试.xlsx'
工作簿 = vb.Workbook(路径) # 打开工作簿
for i in range(1,101):
 工作簿.create_sheet(str(i) + '月')
工作簿.save(路径)
除了9月份的工作表以外都删除
import openpyxl as vb
路径 = r'c:/测试.xlsx'
工作簿 = vb.load_workbook(路径) # 打开工作簿
显示所有工作表 = 工作簿.worksheets
for 工作表 in 显示所有工作表:
 if 工作表.title != '9月':
 工作表 = 工作簿[工作表.title]
 工作簿.remove(工作表)
工作簿.save(路径)
批量修改工作表的名称
import openpyxl as vb
路径 = r'c:/模板.xlsx'
工作簿 = vb.load_workbook(路径)
显示所有工作表 = 工作簿.worksheets
for 工作表 in 显示所有工作表:
 工作表.title = '北京' + 工作表.title
工作簿.save(路径)
获取一个单元格的值
import openpyxl as vb
路径 = r'c:/测试.xlsx'
工作簿 = vb.load_workbook(路径)
工作表 = 工作簿['Sheet1']
单元格 = 工作表['A1'].value
print(单元格)
获取第二列 1,3,5,7行的数据
import openpyxl as vb
路径 = r'c:/测试.xlsx'
工作簿 = vb.load_workbook(路径)
工作表 = 工作簿['Sheet1']
for i in range(1,8,2):
 print(i,工作表.cell(row=i,column=2).value)
获取每一行,每一列
import openpyxl as vb
路径 = r'c:/测试.xlsx'
工作簿 = vb.load_workbook(路径)
工作表 = 工作簿['Sheet1']
# 因为按行,所以返回A1, B1, C1这样的顺序
for 行 in 工作表.rows:
 for 单元格 in 行:
 print(单元格.value)
# A1, A2, A3这样的顺序
for 列 in 工作表.columns:
 for 单元格 in 列:
 print(单元格.value)
读取excel表的所有
from openpyxl import load_workbook
import os
import sys

sys.path.append("..")

class TestExcel():

    def get_TestExcel(self, file_name, sheet_name):
        print("======", os.getcwd())
        # workbook = load_workbook('Datas.xlsx')#打开表
        # sheet = workbook['jack']#定位表单
        workbook = load_workbook(file_name)  # 打开表
        sheet = workbook[sheet_name]  # 定位表单

        test_data = []  # 把所有行的数据放到列表中

        for i in range(2, sheet.max_row + 1):
            sub_data = {}  # 把每行的数据放到字典中
            for j in range(1, sheet.max_column + 1):
                sub_data[sheet.cell(1, j).value] = sheet.cell(i, j).value

            test_data.append(sub_data)  # 拼接每行单元格的数据

        return test_data


if __name__ == "__main__":
    te = TestExcel()
    txt = te.get_TestExcel("../data/Datas.xlsx", "pro")