一、
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.