常用操作Excel库
一、xlrd
-
Workbook对象
wb = xlrd.open_workbook(filename)
下面为Workbook对象的常用方法/属性:
方法/属性 返回值 返回类型 nsheets 表单总数量 int sheet_names() 所有表单名称 list[str] sheet_by_index(idx: int) Sheet对象 Sheet对象 sheet_by_name(sheet_name: str) Sheet对象 Sheet对象 sheets() 所有Sheet对象 list[Sheet对象] -
Sheet对象
通过上面的Book对象的方法来获取对应Sheet对象,如sheet = book.sheet_by_index(0)
下面为Sheet对象的常用方法/属性:
(注意:行号、列号从0开始计,并且单元格内容为数字时,返回的都是float类型)
方法/属性 返回值 返回类型 nrows 表单总行数 int ncols 表单总列数 int name 表单名称 str number 表单列表里的索引 int cell_value(rowx: int, colx: int) 获取指定单元格的值 str/float row_value(rowx: int, start_colx: int, end_colx: int) 获取某一行的指定列(默认为整列)的值 list col_value(colx: int, start_rowx: int, end_rowx: int) 获取某一列的指定行(默认为整行)的值 list
二、openpyxl
-
Workbook对象
wb = openpyxl.load_workbook(filename) # 读文件
wb = openpyxl.Workbook() # 写文件,创建一个新Workbook对象
注意:openpyxl只能读或写xlsx类型的,对于老版Excel的xls格式是无法处理的
下面为Workbook对象的常用方法/属性:
方法/属性 返回值 返回类型 active 创建新Workbook对象都会新建一个Worksheet对象,可以通过这个active来获取(如果是读,则默认是第一个Worksheet对象) Worksheet对象 (1) wb[sheet_name]
(2) get_sheet_by_name(sheet_name: str)获取指定Worksheet对象(可以像第一种通过字典取值的方式获取,也可以通过调用函数来获取) Worksheet对象 (1) sheetnames
(2) get_sheet_names()获取所有Worksheet对象(可以通过属性获取,也可以通过函数获取) list[Worksheet对象] create_sheet(title: str, index: int) 创建一个新的Worksheet对象(如果index不指定,默认加在最后面) Worksheet对象 copy_worksheet(Worksheet对象) 复制一份指定worksheet(只能复制cells和styles,对于图片等是无法复制的) Worksheet对象 save() 保存 None
-
Worksheet对象
下面为Worksheet对象的常用方法/属性:
(注意:行号、列号从1开始计)
方法/属性 返回值 返回类型 title 获取表单的名称(如果进行赋值的话,则代表修改表单名称) str (1) sh[‘位置’].value
(2) sh.cell(row: int, column: int) .value获取某个单元格的值(第一种通过字典的方式来获取,位置对应excel表格如’A2’,表示第2行第1列;第二种通过行和列来获取) str/int (1) sh[‘位置’] = xxx
(2) sh.cell(row: int, column: int, value=xxx)
(3) sh.cell(row: int, column: int).value = xxx设置某个单元格的值 / insert_rows(idx: int, amount) 在第idx行插入新行(如果amount不指定,默认插入1行;如果指定,则从idx行开始,插入amount行) / insert_cols(idx: int, amount) 在第idx列插入新列(如果amount不指定,默认插入1列;如果指定,则从idx列开始,插入amount列) / delete_rows(idx: int, amount) 删除第idx行(如果amount不指定,默认删除1行;如果指定,则从idx行开始,删除amount行) / delete_cols(idx: int, amount) 删除第idx列(如果amount不指定,默认删除1列;如果指定,则从idx列开始,删除amount列) /
-
Cell对象
其实上面的 sh[‘位置’] 或 sh.cell(row: int, column: int) 返回的就是一个Cell对象,除了获取或更改其内容,还可以改变其样式风格(如颜色,字体,大小,对齐方式等)
import openpyxl from openpyxl.styles import Font, colors, PatternFill, Alignment from openpyxl.drawing.image import Image # 1、指定单元格字体颜色,大小,粗体等(修改font属性) sh['A1'].font = Font(color=colors.RED, # 使用预置的颜色常量 size=15, # 设定文字大小 bold=True, # 设定为粗体 italic=True # 设定为斜体 ) # 颜色如果不想使用colors预置的,也可以使用6位RGB数字 sh.cell(2, 2).font = Font(color="981818") # 2、修改单元格背景色(修改fill属性) sh['A1'].fill = PatternFill("solid", fgColor="E39191") # 3、修改对齐方式(修改alignment属性) # horizontal代表水平方向: # 左对齐left,居中center,右对齐right,分散对齐distributed # 跨列居中centerContinuous,两端对齐justify,填充fill,常规general # # vertical代表垂直方向: # 居中center,靠上top,靠下bottom,两端对齐justify,分散对齐distributed # # wrap_text:自动换行,布尔类型的参数,这个参数还可以写作wrapText sh['A1'].alignment = Alignment(horizontal='left',vertical='center',wrap_text=True) # 4、插入图片(注意:这个是通过Worksheet对象调用的,不是Cell对象) # 第一个参数为图片,需要使用Image库来指定图片路径 # 第二个参数为在哪个单元格插入图片 sh.add_image(Image('1.png'), 'B2')