两者都是对于excel文件的操作插件,两者的主要区别在于写入操作,其中xlwt针对Ecxec2007之前的版本,即.xls文件,其要求单个sheet不超过65535行,而openpyxl则主要针对Excel2007之后的版本(.xlsx),它对文件大小没有限制。另外还有区别就是二者在读写速度上的差异,xlrd/xlwt在读写方面的速度都要优于openpyxl,但因为xlwt无法生成xlsx是个硬伤,所以想要尽量提高效率又不影响结果时,可以考虑用xlrd读取,用openpyxl写入。
xlrd读excel文件
wb=xlrd.open_workbook("C:/Users/18408/Desktop/jmeter脚本/达梦压测/dwzh.xlsx")
table = wb.sheets()[0] # 根据索引获取工作表
table = wb.sheet_by_index(0) # 根据索引获取工作表
table = wb.sheet_by_name(r"三国演义") # 根据名程获取工作表
names = wb.sheet_names() # 获取所有工作表的名字
total_rows = table.nrows # 获取总行数
total_cols = table.ncols # 获取总列数
current_row_values = table.row_values(4, startcolx=3, endcolx=4) # 获取该行的列控制[切片]单元格的数据组成的列表
current_col_values = table.col_values(2, startrowx=0, endrowx=1)# 该列的行控制[切片]单元格的数据组成的列表
cell_value = table.cell_value(3, 3) # 获取指定单元格数据
table = wb.sheet_by_name('Sheet1')
dwzh_list=[table.cell_value(j,0) for j in range(table.nrows)] #只有第一列有数据,获取所有第一列数据存入列表
openpyxl写入excel文件
import openpyxl
wb = openpyxl.Workbook() #新建工作簿
workbook_path = "./data.xlsx"
wb = openpyxl.load_workbook(workbook_path) #打开原有工作簿
ws = wb.active # 打开当前工作表,即打开Excel文件时显示的那个工作表
ws.title = "new_name" #修改工作表名
ws = wb.create_sheet("new_sheet_name") #新建工作表
wb.remove("sheet_name") #删除工作表
wb.copy_worksheet(from_worksheet)#复制工作表,只能同一个Excel文件下
max_row = ws.max_row # 获取行数,即有数据的所有行中最大的那一行
max_col = ws.max_column # 获取列数,即有数据的所有列中最大的那一列
min_row = ws.min_row
min_col = ws.min_col
ws.cell_value(row,col) #获取某个单元格数据
ws.cell(row, col, data) #将数据写入某个单元格
#合并和拆分单元格:
ws.merge_cells("A1:B2")
ws.unmerge_cells("A1:B2")
#行列隐藏,True为隐藏
sheet.row_dimensions[2].hidden = True/False
sheet.column_dimensions['a'].hidden = Ture
#冻结窗格:
ws.freeze_panes = "A2" # 冻结第一行
wb.save(workbook_path) # 注意,会覆盖原有文件
ws = wb["Sheet_name"] # 或wb.get_sheet_by_name("Sheet_name") #打开指定工作表