python操作excel中遇到的错误

一、

PermissionError: [Errno 13] Permission denied: 'F:\\lp_test\\besttest\\auto_test\\homework\\syz_automatic_code\\day7\\writing\\d_product.xls'

原因:文件被打开所以不能操作

解决方法:关闭打开的文件



二、IndexError

1.IndexError: list index out of range

原因:

创建sheet页为写成了get_sheet(0),

解决方法:创建sheet页应该使用addd_sheet(),即new_sheet = new_workbook.add_sheet('sheetname')

2.  sheet.cell(0,0)

  File "D:\installed\python3.6.4\lib\site-packages\xlrd\sheet.py", line 408, in cell
    self._cell_types[rowx][colx],
IndexError: list index out of range

原因:打开的sheet页为空,因为cell()函数中引用了rowx及colx的下标,所以导致下标越界


3.    

sheetname = sheetname.decode(self.encoding)

AttributeError: 'int' object has no attribute 'decode'

原因:add_sheet()方法中写的是0,

解决方法:add_sheet()中应该是一个字符串,即sheet页的名字如:new_sheet = new_workbook.add_sheet('sheet1')


4.调用del_unrecongnizable_characters_row只存储了最后一行的数据
原因:初始化存放所有行的列表rows_list=[]放在了for循环里面,每循环一次都会将list清空,所以导致rows_list中保存了最后一行的数据

解决方法:将rows_list=[]放在for循环的外面

5.Exception: Attempt to overwrite cell: sheetname='sheet1' rowx=0 colx=0
原因:以下代码写在了j(j代表列)循环当中导致单元格重写
                    for k in old_sheet.row_values(i):
                        print(k)

                        new_sheet.write(i,j,k)

解决方法:删除for k in 的循环,将new_sheet.write(i,j,k)改为  new_sheet.write(i,j,old_sheet.row_values(i)[j])作为for j in range(old_sheet.ncols+1) 列循环的体

6.

    sheet = book.sheet_by_name('sheet2') #根据名字获取sheet页数据
  File "D:\installed\python3.6.4\lib\site-packages\xlrd\book.py", line 472, in sheet_by_name
    raise XLRDError('No sheet named <%r>' % sheet_name)

xlrd.biffh.XLRDError: No sheet named <'sheet2'>

原因:自动添加的sheet页的名字首字母是大写的S,book.sheet_by_name()方法区分大小写

解决方法:将名字与sheet页的名字完全一致可以了

7.


  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值