python openpyxl方法 zip函数用法及说明
作者:酒仙桥喝咖啡第一名
这篇文章主要介绍了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列
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。