Python3 集成openpyxl 模块

虾米哥 阅读:725 2021-03-31 12:52:18 评论:0

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 实战之指定数据写入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") 

标签:Python
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号