基础知识:
openpyxl模块
中文文档:https://www.osgeo.cn/openpyxl/index.html
工作簿、工作表、单元格之间的关系:
—个工作簿(workbook)由多个工作表(worksheet)组成;
一个工作表有多个单元格(cell)组成;
通过行(row)和列(column)可以定位到单元格。
新建并写入文件
.Workbook():新建excel文件,新建文件时默认有一个名为Sheet工作表
打开并读取文件
. load_workbook(path):加载指定路径的excel文件 ,可加参数:data_only=True,data_only=True作用主要是防止表格里面有公式,如果有公式可直接读取公式计算后的值,避免输出公式。
工作簿对象
wb.active :获取第一张工作表对象。
wb[sheet_name] :获取指定名称的工作表对象. wb.sheetnames :获取所有工作表名称
wb.worksheets:获取所有工作表对象,wb.worksheets[0]可以根据索引获取工作表,0代表第一个。
wb.create_sheet(sheet_name,index=end"):创建并返回一个工作表对象,默认位置最后,0代表第一个。
wb.copy_worksheet(sheet):在当前工作簿复制指定的工作表并返回复制后的工作表对象。
wb.remove(sheet):删除指定的工作表。
ws.save(path):保存到指定路径path的Excel文件中,若文件不存在会新建,若文件存在会覆盖。
单元格读取
ws['A1']:根据坐标获取单个单元格对象。
ws.cell(row, column, value=None):根据行列获取单个单元格对象。
ws.max_row:获取最大行数。
ws.max_column:获取最大列数。
ws.append(["","",""]):往表格对应列添加数据。
ws[1]:获取第一行所有单元格对象,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"]也可。
单元格对象
cell.value :获取或设置值. cell.column :数字列标.
cell.column_letter :字母列标. cell.row :行号
cell coordinate : 坐标,例如'A1'
cell.data_type:数据类型,'s' = string字符串,n'= number数值,会根据单元格值自动判断.
cell.number_format:单元格格式,默认"General"常规,详见excel自定义数据类型
单元格样式
cell.font:获取或设置单元格Font对象(字体名称,字体大小,是否加粗,字体颜色等)
cell.border :获取或设置单元格边框
cell.alignment :获取或设置单元格水平/垂直对齐方式
cell.fill:获取或设置单元格填充颜色
列宽与行高
ws.row_dimensions[行号]:获取行对象(非行数据,包括行的相关属性、行高等)
ws.column_dimensions[字母列标]:获取列对象(非行数据,包括行的相关属性、列宽等)
get_column_letter(index):根据列的索引返回字母
column_index_from_string(string):根据字母返回列的索引row.height:获取或设置行高
column.width:获取或设置列宽
如何根据输入内容计算其在excel的列宽是多少?
利用GBK编码方式,非汉字字符占1个长度,汉字字符占2个长度
插入和删除行和列
插入和删除行、列均使用数字指定
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列