摘要:几年前的一本书,最近来跟着学习,目前在第4章:Excel表格自动化。
几年前的一本书,最近来跟着学习,目前在第4章:Excel表格自动化。
结果一两页的内容,就已经出了很多错了。
import xlrd
people = xlrd.open_workbook('people.xlsx') #读取名为people的工作簿
出错了:FileNotFoundError: [Errno 2] No such file or directory: 'people.xlsx'
“没有这样的文件或目录”
好的,我去代码文件夹里新建一个‘people.xlsx’文档
仍然出错:xlrd.biffh.XLRDError: Excel xlsx file; not supported
原因是:xlrd不支持.xlsx文件,只支持.xls文件
解决方法,要么安装旧版本,要么使用xlrd3。
图片来源于网络
图片来源于网络
使用xlrd3,于是先去命令行窗口安装xlrd3:
pip install xlrd3
在VSCode里导入xlrd3
import xlrd3 as xlrd
people = xlrd.open_workbook('people.xlsx')
成功了,继续操作
sheet = people.sheets[0] #选择所有工作表中的第一个
又出错了:TypeError: 'generator' object is not subscriptable
于是换了个:
sheet = people.sheet_by_index(0) #选择所有工作表中的第一个
这个成功了
import xlrd3 as xlrd
people = xlrd.open_workbook('people.xlsx')
sheet = people.sheet_by_index(0)
但是,以下代码也没问题:
import xlrd
people = xlrd.open_workbook('people1.xls')
sheet = people.sheets[0]
继续sheet.cell_value(row, col):
sheet.cell_value(1,0) #获取A2(第2行第1列)
sheet.cell_value(0,1) #获取B1(第1行,第2列)
继续:
sheets_num = book.nsheets
sheets_names = book.sheet_names
nrows = sheet.nrows
ncols = sheet.ncols
又出错了:NameError: name 'book' is not defined
“book”没定义,我还以为book就是专用的词呢,结果不是
看它的代码文件里,也只有这4句,也没定义book的语句,这书真的是:无语
修改下:
sheets_num = people.nsheets #获取工作簿中工作表数目
sheets_names = people.sheet_names #获取工作表中工作表名称列表
nrows = sheet.nrows #获取工作表中有值单元格的行数
ncols = sheet.ncols #获取工作表中有值单元格的列数
好奇怪,我把代码文件关了再重新打开运行时,又出现问题了:
FileNotFoundError: [Errno 2] No such file or directory: 'people1.xls'
为什么呢,这个文件和代码文件就在同一个文件夹里呀,也存在呀?为什么,为什么?
把它的全部路径地址写上就对了,可是代码文件没关闭之间就是正常的呢?为什么代码文件关闭后重新打开运行就要写上绝对路径呢?
来源:教育资讯报导