python openpyxl方法 zip函数用法及说明

 更新时间:2023年05月30日 10:29:59   作者:酒仙桥喝咖啡第一名  
这篇文章主要介绍了python openpyxl方法 zip函数用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

python openpyxl方法 zip函数

import  os
from openpyxl  import  load_workbook
#导入 os模块和 openpyxl模块
# 加载一个xlsl文件
excel_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),"cla.xlsx")
# 加载文件的工作簿对象
wb = load_workbook(excel_path)
# 加载指定工作薄
sh = wb["Sheet1"]
# sh = wb["工作簿的名称"]
# 获取当行的值
print(sh.cell(3,3).value)
print(sh.cell(3,4).value)
#修改某一行的值
sh.cell(1,1).value = "id "
sh.cell(3,3).value ="python"
#修改某一行的值 sh.cell(行,列).value ="想要修改的值"
# 修改后保存 否则修改后不会生效
wb.save(excel_path)
#把修改后的文件另存为一个新文件
new_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),"new_cases.xlsx")
wb.save(new_path) 
# 获取表单中最大的行 列
print(sh.max_row)
print(sh.max_column)
# 通过循环来遍历表里面所有的数据
for row in list(sh.values):
    print(row)
#未使用zip函数时的遍历    
for values in all_values[1:]:
    print(keys,values)
#通过zip函数来遍历我们的键和值
#定义一个空列表
cases_list = []
# 定义一个变量来接收值
all_values = list(sh.values)
keys = all_values[0]
# 从第一个开始进行遍历 第0行数据是我们的表头
for values in all_values[1:]:
    case = dict(zip(keys,values))
    #用zip函数来接受我们的遍历结果
    print(case)
    cases_list.append(case)
#zip函数:zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
new1 = {"性别","姓名","年龄","身高"}
new2 = {"男","python菜鸟","21","175"}
#用列表方式接收返回值
res = list(zip(new1,new2))
print(res)
#用字典方式接收返回值
res1 = dict(zip(new1,new2))
print(res1)

Python openpyxl 常用方法即学即查即用

名词概念

开始之前请先明确一些概念, 工作簿, 指的就是整个excel文件, 通常为*.xlsx文件, 在代码中通常写作workbook; 工作簿中包含若干个sheet, 单个sheet称之为工作表, 代码中通常写作worksheet

如何安装库

打开命令行窗口, 输入

pip install openpyxl

如何新建一个工作簿

import openpyxl
workbook = openpyxl .Workbook('book.xlsx')  # 在工作目录下新建一个名字叫book.xlsx的工作簿; 注意, W为大写
workbook.save('book.xlsx')  # 保存该工作簿

载入一个工作表(sheet)

workbook = openpyxl.load_workbook('book.xlsx')

工作表(sheet)的操作方法

activeSheet = workbook.active  # 将默认激活的sheet返回到一个实例对象
bookList = workbook.worksheets  # 获取一个包含所有工作表(sheet)的列表 到 bookList这个对象
sheetTitle = bookList[0].title  # 获取bookList这个列表中的第一个元素(即第一个sheet)的名称字符串
workSheet = workbook['sheet1']  # 将sheet1实例化到一个worksheet对象
workSheet = workbook.worksheets[0]  # 将第一个工作表实例化到一个worksheet对象
workbook.remove(workbook['sheet1'])  # 删除名为sheet1的工作表, 注意, 括号中的参数要给到对象, 不能给字符串类型
workbook.create_sheet('sheelt2')  # 创建一个名为sheet2的新工作表
workbook.copy_worksheet(workbook['sheet1']).title = 'sheet_copy'  # 等号前面为复制sheet1工作表, 等号后面为同时重命名为'sheet_copy'
workbook.sheetnames  # 返回一个所有sheet名字的列表

单元格(cell)的操作方法

开始之前首先要先实例化一个工作表对象:

workSheet = openpyxl.load_workbook('book.xlsx')

定位单元格方法:

# 方法1:
A1 = workSheet['A1']  # 将单元格A1实例化到对象A1
# 方法2:
A1 = workSheet.cell(row=1, column=1)  #将第一行第一列的单元格实例化到对象A1
# 方法3:
A1 = workSheet.cell(1, 1)  # 同上, 给定参数的顺序为行->列

获取区域单元格的方法:

workSheet['A1:C3']  # 获取A1到C3之间的所有单元格对象, 返回类型是以行为单位的元组, 同时每行也是一个元组数据
workSheet['A:C']  #获取A~C列的所有单元格对象, 返回类型是以列为单位的元组, 同时每列也是一个元组数据
workSheet.iter_rows(min_row=1, max_row=3, min_col=1, max_col=3) # 获取第1行到第三行, 第1列到第3列的所有单元格对象
# 获取单行数据:
workSheet['1']  # 返回第一行的所有数据到一个元组对象
# 获取单列数据:
workSheet['A']  # 返回A列的所有数据到一个元组对象
# 获取整个工作表数据:
list(workSheet.values)  #返回一个列表, 列表中的每个元素为单行所有数据的元组形式
workSheet.rows  # 以行为元组单位返回一个列表元素
workSheet.columns  # 以列为元组单位返回一个列表元素

快速获取每行或每列数据的列表的方法:

row = workSheet['1']  # 将第一行实例化到row对象
rowList = [each.value for each in row]  # 使用列表表达式将第一行所有数据生成为一个rowList列表
column = workSheet['A']  # 将第一列实例化到column对象
colList = [each.value for each in column]  # 使用列表表达式将第一行所有数据生成为一个colList列表
# 以获取行数据为例, 完整写法如下:
row = workSheet['1']
rowList = []
for each in row:
	rowValue = each.value
	rowList.append(rowValue)

获取工作表的最大行数与最大列数:

worksheet.max_row  #    获取当前sheet最大行数, 类型为整形
worksheet.max_column  # 获取当前sheet最大列数, 类型为整形

数字列号与字母列号相互转换的方法:

如何将数字列转换成字母列?

openpyxl.utils.get_column_letter(1)  # 将数字类型的第一列转换为字母类型A列, 返回类型为字符串

如何将字母列转换成数字列?

openpyxl.utils.column_index_from_string('AA')  #将字母类型的列号转换为数字列号, 返回类型为字符串

获取单元格行号与列号

首先实例化一个单元格对象:

cell = worksheet['C3']  # 将第3行第3列的单元格实例化到一个cell元素
cell.row  #    获取单元格的行号, 类型为int整形
cell.column  # 获取单元格的列号, 类型为int整形

写入与插入数据

worksheet['A1'] = 'string'  #     在A1单元格写入字符串'string'
worksheet.cell(1, 1) = 'string  # 在A1单元格写入字符串'string'
worksheet.insert_cols(idx=1, amount = 5) # 在第一列后插入5列空列
worksheet.insert_rows(idx=1, amount = 5) # 在第一行后插入5列空行
worksheet.delete_rows(idx=1, amount = 5)  # 在第一行后连续删除5行
worksheet.delete_cols(idx=1, amount = 5)  # 在第一列后连续删除5列

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

最新评论