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

适用于按行保存的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 可以考虑是这行单元格中某个出了非法字符,可以读取内容然后替换掉非法字符,如果没有出现非法字符,可以考虑在末尾加“ ”空格解决问题,遇到编码问题是看清楚错误原因,添加或修改相应的字符一般可以解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值