openpyxl 模块简介:

openpyxl 模块可以读写Excel 文件,包括xlsx、xlsm、xltx和xltm等格式

openpyxl 模块 安装

执行如下安装命令:

pip install openpyxl

openpyxl 模块涉及主要概念:

Workbook:代表一个Excel 工作表

Worksheet:代表一个Excel 工作表中的一页(sheet)

Cell:代表最简单的一个单元格

Workbook 对象涉及属性和方法:

Workbook 对象涉及属性如下:
active: 获取当前活跃的Worksheet
worksheets: 以列表的形式返回所有Worksheet
read_only: 判断是否以read_only 模式打开excel 文档
encoding:获取文档的字符集编码
properties: 获取文档的元数据,如标题、创建者、创建日期等


Workbook 对象涉及方法如下:
get_sheet_names:获取所有表格的名称(该方法已经被废弃,推荐使用:通过Workbook 的sheetnames 属性即可获取)
get_sheet_by_name:通过表格名称获取WorkSheet对象(该方法已经被废弃,推荐使用:通过Worksheet['表名']获取)
get_active_sheet: 获取活跃的表格
remove_sheet:删除一个表格
create_sheet:创建一个表格
copy_worksheet:在Workbook 内复制表格

Worksheet 对象涉及属性和方法:

Worksheet 对象涉及相关属性
title:表格的标题
dimensions:表示表格的大小,这里的大小是指数据的表格大小,即,左上角的坐标和右下角的坐标
max_row:表格最大行数
min_row:表格最小行数
max_column:表格最大列数
min_column:表格最小列数
rows:按行获取单元格
columns:按列获取单元格
freeze_panes:冻结窗口
values:按行获取表格内容

Worksheet 对象涉及相关方法
iter_rows:按行获取所有单元格,内置属性有:min_row、max_row、min_col和max_col
iter_columns:按列获取所有单元格
append:在表格末尾添加数据
merged_cells:合并多个单元格
unmerged_cells:移除合并的单元格

Cell 对象涉及属性和方法:

Cell 对象涉及相关属性
row: 单元格所在的行
column: 单元格所在的列
value: 单元格的值
coordinate:单元格的坐标

openpyxl 实战

openpyxl 实战之简单excel 文件读取

from openpyxl import load_workbook

# 打开excel指定excel 文件
wb = load_workbook("E:\demo.xlsx")
# 输出excel 文本包含所有sheet
print(wb.sheetnames)
# 输出指定sheet
sheet = wb.get_sheet_by_name("Sheet1")
# 读取sheet 最大行数
print(sheet.max_row)
# 读取sheet 最大列数
print(sheet.max_column)
# 读取指定Sheet 内容的Cell
print(sheet["A1"])
# 读取Cell 的值
print(sheet["A1"].value)
# 遍历输出sheet 指定列
for i in sheet["A"]:
    print(i.value, end="")

openpyxl 实战之数据写入指定excel 文件中

import openpyxl
import time


# 定义数据
ls = [['周晨曦', '2', '肉肉', '广东省.深圳市', '男'], ['王梓暲', '2', '森宝', '上海市', '女']]
# 时间格式定义
time_format = '%Y-%m-%d_%H:%M:%S'
time_current = time.strftime(time_format)


# 定义保存excel 文件方法
def saveexcel(data, sheetname, wbname):
    print("数据写入指定excel 文件")
    # 打开指定excel 文件
    wb = openpyxl.load_workbook(filename=wbname)
    # 关联excel 活动sheet
    sheet = wb.active
    # 获取sheet 最大行数
    max_row = sheet.max_row
    # 指定新数据写入指定行
    row = max_row + 3
    # 计算当前数据的长度
    data_len = row + len(data)

    # 数据写入
    for data_row in range(row, data_len):
        for data_cell in range(2, 7):
            _ = sheet.cell(row=data_row, column=1, value=str(time_current))
            _ = sheet.cell(row=data_row, column=data_cell, value=str(data[data_row - data_len][data_cell -2]))

    # 保存数据
    wb.save(filename=wbname)
    print('excel 文件保存成功')
saveexcel(ls,"Sheet1","E:\demo.xlsx")

效果截图:

openpyxl需要安装python那个版本 python中openpyxl模块安装_字符集编码

 

openpyxl 实战之指定数据写入excel 文件中,并生成对应图表

from openpyxl import Workbook
from openpyxl.chart import (
    AreaChart,
    Reference,
    Series
)

wb = Workbook()
ws = wb.active
rows = [
    ['地区', '最低工资', '最高工资', '平均工资'],
    ['广东', '2790', '66780', '8790'],
    ['上海', '3400', '54000', '9800'],
    ['北京', '4200', '117890', '10780'],
    ['江苏', '2600', '35000', '6780'],
]

for row in rows:
    ws.append(row)

chart = AreaChart()
chart.title = "工资区域统计表"
chart.style = 13
chart.x_axis.title = "地区"
chart.y_axis.title = "工资水平"

cats = Reference(ws, min_col=1, min_row=1, max_row=7)
data = Reference(ws, min_col=2, min_row=1, max_row=7, max_col=3)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)

ws.add_chart(chart, "A10")
wb.save("E:\chart.xlsx")

openpyxl需要安装python那个版本 python中openpyxl模块安装_字符集编码_02