Python处理Excel
Python处理Excel经常会用到第三方库有xlrd、xlwt、openpyxl;下面介绍这三个第三方库常用的方法。
xlrd/xlwt与openpyxl的区别和效率
区别:python中xlrd/xlwt与openpyxl处理Excel的主要区别在于写入操作,其中xlwt针对Ecxec2007之前的版本,(.xls文件),其要求单个sheet不超过65535行,而openpyxl则主要针对Excel2007之后的版本(.xlsx文件),它对文件大小没有限制。
效率:整体而言,两种包对小文件的读写速度差别不大,而面对较大文件,xlrd/xlwt速度明显优于openpyxl,但因为xlwt无法生成xlsx是个硬伤,所以想要尽量提高效率又不影响结果时,可以考虑用xlrd读取,用openpyxl写入。
xlrd模块
# 导入模块
import xlrd
# 打开Excel文件
workbook = xlrd.open_workbook("filename")
# sheet相关操作
workbook.sheet_names() 获取所有sheet的名字,返回列表
workbook.sheet_by_index() 根据索引获取sheet对象
workbook.sheets() 获取所以sheet对象,返回列表
sheet = workbook.sheet_by_name() 根据名字获取sheet对象
sheet.name 获取sheet对象的名字
sheet.nrows 获取sheet对象的行数
sheet.ncols 获取sheet对象的列数
# cell相关操作
sheet.cell(row,col) 获取指定行和列的cell对象
sheet.row_slice(row,start_col,end_col) 获取指定行的某几列的cell对象
sheet.col_slice(col,start_row,end_row) 获取指定列的某几行的cell对象
sheet.cell_value(row, col) 获取指定行和列的值
sheet.row_values(row,start_col,end_col) 获取指定行的某几列的值
sheet.col_values(col,start_row,end_row) 获取指定列的某几行的值
sheet.put_cell(row,col,ctype,value,xf_index)
在原有表的基础上增减新的内容,xf_index参数是去控制样式,写None即可
cell.ctype cell的数据类型
# cell的数据类型
xlrd.XL_CELL_TEXT 文本类型
xlrd.XL_CELL_NUMBER 数值类型
xlrd.XL_CELL_DATE 日期时间类型
xlrd.XL_CELL_BOOLEAN 布尔类型
xlrd.XL_CELL_EMPTY 空白数据类型
xlwt模块
# 导入模块
import xlwt
# 创建workbook对象
workbook = xlwt.Workbook()
#创建一个sheet
sheet = workbook.add_sheet("sheetname")
#写入单元格中,参数1:某行,参数2:某列,参数3:写入的值
sheet.write(row, col, value)
#保存表格
workbook.save('new_filename.xlsx')
openpyxl模块
# 导入模块
from openpyxl import load_workbook
# 打开Excel文件
workbook = load_workbook('filename.xlsx')
# 找到相应的表单
sheet = workbook['sheetname']
# 修改单元格的数据
sheet.cell(row,col).value = new_value
# 总行数
sheet.max_row
# 总列数
sheet.max_colum
# 该表单的所有行的数据的可迭代对象
sheet.rows
# 保存数据
workbook.save('filepath')
# 关闭文件,释放资源
workbook.close