安装
pip install openpyxl
重装
(1)卸载出问题的库
pip uninstall pandas
pip uninstall openpyxl
(2)重新安装
python -m pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
python -m pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple
对象结构
工作簿的属性和方法
工作簿对象的属性
属性 | 作用 |
---|---|
active | 获取当前活跃的Worksheet |
worksheets | 以列表的形式返回所有的Worksheet(表格) |
data_only | 默认为False,为True时只读取数据不显示公式 |
read_only | 判断是否以read_only模式打开Excel文档 |
encoding | 获取文档的字符集编码 |
properties | 获取文档的元数据,如标题,创建者,创建日期等 |
sheetnames | 获取工作簿中的表(列表) |
WB = vpa.load_workbook(path)
print(WB.active)
print(WB.worksheets)
print(WB.data_only)
print(WB.read_only)
print(WB.encoding)
print(WB.properties)
print(WB.sheetnames)
"""
RESULT:
<Worksheet "Sheet1"> # Sheet1 is active
[<Worksheet "SheetNo.1">, <Worksheet "Sheet1">] # two worksheet objects
False # not data_only
False # not read_only
utf-8 # encoded by utf-8
<openpyxl.packaging.core.DocumentProperties object> # infos
Parameters:
creator='openpyxl', title=None, description=None, subject=None, identifier=None, language=None, created=datetime.datetime(2021, 7, 10, 7, 28, 10), modified=datetime.datetime(2021, 7, 10, 14, 3, 55), lastModifiedBy='费东旭', category=None, contentStatus=None, version=None, revision=None, keywords=None, lastPrinted=None
['SheetNo.1', 'Sheet1'] # Sheet names
"""
方法函数
方法 | 返回值 | 作用 |
---|---|---|
Object = 工作簿[‘工作表名’] | null | 通过表格名称获取Worksheet对象 |
remove(Object) | null | 删除一个工作表对象【对象】 |
create_sheet(‘Sheet name’) | null | 创建一个空的表格【表名】 |
copy_worksheet(Object) | objects | 在Workbook内拷贝表格【对象】 |
WS = WB['Sheet1']
WB.remove(WS)
WB.create_sheet('New Sheet')
WS = WB['New Sheet']
WS = WB.copy_worksheet(WS)
print(WS.title) # New Sheet Copy
WB.save(path)
工作表的属性和方法
工作表对象
属性
title | 工作表的名称 |
---|---|
dimensions | 表格的大小,这里的大小是指含有数据的表格的大小,即:左上角的坐标:右下角的坐标 |
max_row | 表格的最大行 |
min_row | 表格的最小行 |
max_column | 表格的最大列 |
min_column | 表格的最小列 |
rows | 按行获取单元格(Cell对象) - 生成器 工作表.rows |
columns | 按列获取单元格(Cell对象) - 生成器 工作表.columns |
freeze_panes | 冻结窗格 工作表.freeze_panes = “C3” |
values | 按行获取表格的内容(数据) - 生成器 |
freeze_panes,参数比较特别,主要用于在表格较大时冻结顶部的行或左边的行。对于冻结的行,在用户滚动时,是始终可见的,可以设置为一个Cell对象或一个单元格坐标的字符串,单元格上面的行和左边的列将会冻结(单元格所在的行和列不会被冻结)。例如我们要冻结第一行那么设置A2为freeze_panes,如果要冻结第一列,freeze_panes取值为B1,如果要同时冻结第一行和第一列,那么需要设置B2为freeze_panes,freeze_panes值为none时 表示 不冻结任何列。
方法
方法 | 作用 |
---|---|
iter_rows | 按行获取所有单元格,内置属性有(min_row,max_row,min_col,max_col) |
iter_columns | 按列获取所有的单元格 |
append | 在表格末尾添加数据 |
merged_cells | 合并多个单元格 |
unmerged_cells | 移除合并的单元格 |
单元格的属性和方法
单元格对象
属性
属性 | 作用 |
---|---|
row | 单元格所在的行 |
column | 单元格坐在的列 |
value | 单元格的值 |
coordinate | 单元格的坐标 |
WS = WB['SheetNo.1']
WS2 = WB.worksheets[0]
cell = WS['B2']
print(cell.value)
print(cell.row)
print(cell.column)
print(cell.coordinate)
cell2 = WS.cell(1, 1)
print(cell2.value)
'''
7
2
2
B2
1
'''