openpyxl 快速上手教程

发布时间 2023-04-19 14:43:08作者: Mlianga

openpyxl

wb = Workbook()#新建工作薄
ws = wb.active #获取活动工作表
wb['Sheet1'] #通过名字获取工作表
wb.worksheets[0] #通过索引获取工作表

ws.append([]) #追加一行数据
ws.save() #报错呢到指定路径
###读取
wb = load_work('filename')
ws = wb.active
for row in ws.values: #输出所有数据
    print(row)

wb[sheet_name]:获取指定名称的工作表对象
wb.worksheets: 获取所有工作表对象,
wb.worksheets[0]:通过索引获取工作表
wb.create_sheet(sheet_name,index='end'): 创建并返回一个工作表对象,默认位置最后,0代表放前面
wb.copy_worksheet(sheet):在当前工作薄复制指定的工作表并返回复制后的工作表对象
wb.remove(sheet):删除指定工作表
ws.save(path): 报错到指定路径path的Excel文件种,若文件不存在会新建,若存在则覆盖

工作表对象
ws.title: 获取或设置工作表名
ws.max_row: 工作表最大行数
ws.max_columnn:工作表最大列数
ws.append(list);表格末尾追加数据
ws.merge_cells('A2:D2'):合并单元格
ws.unmerge_cells('A2:D2'):解除合并单元格


单元格读取
ws['A1']:根据坐标获取单个单元格第项
ws.cell(row,column,value=None):根据行列获取单个单元格对象
ws[1]:获取第一行所有单元格对象
ws['A']: 获取第A列所有单元个对象
ws['A':'B'] :获取A到B列所有单元格对象,ws['A:B']也可
ws[1:2] : 获取1到2行所有单元格对象,ws['1:2']也可
ws['A1':'B2']:获取A1到B2 范围内的所有单元格对象,ws['A1:B2']也可

ws.values: 获取单元格数据的可迭代对象,可通过for循环迭代或通过list(ws.values)转换为数据列表
ws.rows:以行的格式组成的可迭代对象
ws.columns:以列的格式组成的可跌代对象

ws.iter_rows(min_row=None,max_row=None,min_col=None,max_col=None):获取指定表姐范围并以行格式组成迭代对象
ws.iter_cols(min_col=None,max_col=None,min_row=None,max_row=None):获取指定边界范围并以列格式组成的迭代对象


单元格对象
cell.value: 获取或设置值
cell.column: 数字列标
cell.column_letter:字母列标
cell.row:行号
cell.coordinate:坐标,例如'A1'
cell.data_type:数据类型,'s'=string 字符串,'n'=number数值,会根据单元格值自动判断
cell.number_format:单元格格式,默认'General'常规,

单元格样式
cell.font:获取或设置单元格Font对象(字体名称,字体大小,是否加粗,字体颜色等)
cell.border: 获取或设置单元格边框
cell.alignment: 获取或设置单元格水平/垂直对其方式
cell.fill:获取或设置单元格填充颜色


列宽与行高
ws.row_dimensions[行号]:获取行对象(非行数据,包括行的相关属性、行高等)
ws.column_domensions[字母列标]:获取列对象(非行数据,包括行的相关属性】列宽等)
get_column_letter(index):根据列的索引返回字母
column_index_from_string(string):根据字母返回列的索引
row.height:获取或设置行高
column.width: 获取或设置列宽


插入和删除行和列
插入和删除行、列均使用数字指定
ws.insert_rows(row_index,amount=1):在第row_index行上方插入amount列,默认插入1列
ws.insert_cols(col_index,amount=1);在第col_index列左侧插入amount列,默认插入1列
ws.delete_rows(row_index,amount=1):从row_index 行开始向下删除amount行,默认删除1行
ws.delete_cols(col_index,amount=1):从col_index列开始向右删除amount列,默认删除1列