1、安装Python3.7.0(官网下载安装包) 2、安装Pycharm(官网下载安装包) 3、安装openpyxl
命令行窗口执行: pip install openpyxl ,出现Successfully installed表示安装成功。
4、准备一份Excel表格,绝对路径:D:\zxt\test_data.xlsx , test_data.xlsx内容如下:
了解几个常用概念workbook 工作簿 worksheet 表单 row 行 column 列 cell 单元格 active 活跃的表单(即:正打开使用的表格) index 索引 (注意:Excel中的索引值是从1开始!!!) Python读取Excelimport openpyxl # 一、打开工作簿 wb = openpyxl.load_workbook(r"D:\zxt\test_data.xlsx", read_only=False) # 二、从工作簿中获取表单 # 1.遍历表单名称 for sheet in wb: print(sheet.title) print(wb.sheetnames) # 结果是一个列表 # 2.获取表单对象 mySheet = wb.create_sheet('表单4') print(wb.sheetnames) sheet4 = wb['表单4'] # 通过表单名获取,注意这里使用方括号 # 三、从表单中取出单元格,并打印单元格的行、列、值 ws = wb.active # 取出活跃的表单 print(ws) # 打印表单 print(ws['A1']) # 打印A1单元格 print(ws['A1'].value) # 打印A1单元格的值 # 1.打印B2单元格的行、列、值 c = ws['B2'] print("B2单元格的行数是{0},列数是{1},值是{2}".format(c.row, c.column, c.value)) print("单元格{0}的值是{1}".format(c.coordinate, c.value)) # c.coordinate表示获取单元格的坐标 # 2.还可以通过指定单元格的行、列索引值,来获取单元格的值 print(ws.cell(row=2, column=2).value) for i in range(2, 8, 2): print(ws.cell(row=i, column=2).value) for j in range(1, 3): print(ws.cell(row=2, column=j).value) # 3.根据指定的行、列范围打印单元格的值 row6 = ws[6] print(row6) columnB = ws['B'] print(columnB) row_range = ws[1:8] # 采用切片的方法获取行的范围 column_range = ws['A:C'] column_index = range(1, 4) # 利用for循环遍历单元格的值 # 方法1.先取出每一行,再取出每一行中的每一个单元格来获取值 for row in row_range: for cell in row: print(cell.value) # 方法2.先取出每一列,再取出每一列中的每一个单元格来获取值 for col in column_range: for cell in col: print(cell.value) # 方法3.通过生成器打印指定矩形区域单元格的值 # 说明:使用iter_rows()和iter_cols()方法更加灵活,可以指定单元格的行、列范围,返回的是一个生成器。 for row in ws.iter_rows(min_row=1, max_row=8, min_col=1, max_col=2): for cell in row: print(cell.value) for col in ws.iter_cols(min_col=1, max_col=2, min_row=1, max_row=8): for cell in col: print(cell.value) # 方法4.按照单元格的范围(矩形)区域打印单元格的值 # 先给出单元格的范围,然后按行取打印每个单元格的值 cell_range = ws['A1:B8'] for rowOfCellObject in cell_range: for cellObj in rowOfCellObject: print(cellObj.coordinate, cellObj.value) 获取表单的最大行数、最大列数
print("表单1是:{0}*{1}的表格".format(ws.max_row, ws.max_column))
列对应的数字和字符转换# 说明:使用这个转换功能,我们需要先导入2个模块 from openpyxl.utils import get_column_letter, column_index_from_string print(get_column_letter(2), get_column_letter(20), get_column_letter(47)) print(column_index_from_string('AU'), column_index_from_string('AHH')) |