python 操作excel (openpyxl)

 - 安装

pip install openpyxl

 - 创建一个新的工作薄

from openpyxl import Workbook

wb = Workbook()

wb1 = wb.create_sheet("index") # 默认最后一个

wb1 = wb.create_sheet("index",0) # 第一个

 - 保存

wb1.save('jam.xlsx')

 - 修改工作薄的名称

wb1.title = "New Title"

 - excel 添加数据

wb1["A1"] = "jamlee" # 根据索引
如果尚不存在,则创建一个单元格。值可以直接分配
 
wb1.cell(row=3,column=6,value="干干巴巴") # 根据单元格位置来添加
# 函数

wb1["A5"] = 4
wb1["A6"] = 5
wb1["A7"] = "=sum(A5:A6)"
# append  可以一次添加多行数据,从第一行空白行开始(下面都是空白行)写入。

row = [1 ,2, 3, 4, 5]
sheet.append(row)

 - extel 获取数据

from openpyxl import load_workbook  #导入模块
wb = load_workbook(filename = 'jam.xlsx') #打开文件,默认可读写,若有需要可以指定write_only和read_only为True
# 获取所有的工作薄名称

wb.sheetnames
 #找到工作表

sheet = wb['index']
# 索引

sheet["A2"].value

# 位置

sheet.cell(row=2,column=2).value
sheet.rows为生成器, 里面是每一行的数据,每一行又由一个tuple包裹。
sheet.columns类似,不过里面是每个tuple是每一列的单元格。

# 因为按行,所以返回A1, B1, C1这样的顺序
for row in sheet.rows:
    for cell in row:
        print(cell.value)

# A1, A2, A3这样的顺序
for column in sheet.columns:
    for cell in column:
        print(cell.value)
# 获得某行的数据

for cell in list(sheet.rows)[2]:
    print(cell.value)
# 获取上面sum的单元格注意  (注意Python获取到是None时 需要去excel表实时刷新这样就不会是空了)

如果是读取的时候需要加上data_only=True这样读到A7返回的就是数字,如果不加这个参数,返回的将是公式本身'=sum(A5:A6)' 

猜你喜欢

转载自www.cnblogs.com/lzmdbk/p/10418542.html