数据分析|python xlwt xlrd的坑

**最近在用 python 处理数据,踩了不少坑,在这里总结一下关于 xlrd 和xlwt 在处理程序时遇到的坑。** 1. xlwt 写表格

def write_excel(sheetname,data): book = xlwt.Workbook(encoding='UTF-8')#创建excel对象 sheet = book.add_sheet("sheet1")#添加一个表 #保存当前列 for d in range(0,len(data)): #取出data中的每一个元组存到表格的每一行 for j in range(0,len(data[d])):#将每一个元组中的每一个单元存到每一列 sheet.write(d, j, data[d][j]) filename = sheetname+('.xls') book.save(filename) #保存excel

【数据分析|python xlwt xlrd的坑】适用于按行保存的list
def write_excel(sheetname,data): book = xlwt.Workbook(encoding='UTF-8')#创建excel对象 sheet = book.add_sheet("sheet1")#添加一个表 #保存当前列 for d in range(0,len(data)): #取出data中的每一个元组存到表格的每一行 for j in range(0,len(data[d])):#将每一个元组中的每一个单元存到每一列 sheet.write(j, d, data[d][j]) filename = sheetname+('.xls') book.save(filename) #保存excel

适用于按列保存的list 这里不需要像pandas 那样指定列顺序,直接安装data里的顺序写入 。另外就是不需要确定每列都是一样的长度,会自动调成同样的长度。
  1. xlrd 读(xlsx,xls)
def read_excel(dir_car,filename): workbook = xlrd.open_workbook(dir_car +filename) sheet1_name= workbook.sheet_names()[0] sheet1 = workbook.sheet_by_name(sheet1_name) sheet1.col_values(0) # 第1列 sheet1.row_values(0) # 第1行

但是在实际中会出现同样写入的文件,再次读写时编码出差,如果遇到’utf-16-le’ codec can’t decode bytes in position 206-207: unexpected end of data 可以考虑是这行单元格中某个出了非法字符,可以读取内容然后替换掉非法字符,如果没有出现非法字符,可以考虑在末尾加“ ”空格解决问题,遇到编码问题是看清楚错误原因,添加或修改相应的字符一般可以解决。

    推荐阅读