今天学习东西是从一个Excel文件中取出一个单元格的数据,并打印出来。对比cell 和 cell_vavalue 的不同。
源程序如下:
import xlrdfilename = "D:\python\pythonProject\000001.xlsx"book = xlrd.open_workbook(filename, encoding_override="utf-8")text = book.sheets()for book in text:sheet_name = [book.name]sbs = book.cell(1, 0)print(sbs)sbs = book.cell_value(1, 0)print(sbs)print(sheet_name)
运行程序时候,出现如下错我
Traceback (most recent call last):
File “D:\python\pythonProject\测试-1.py”, line 4, in
book = xlrd.open_workbook(filename, encoding_override=“utf-8”)
File “C:\Users\ThinkPad\AppData\Local\Programs\Python\Python39\lib\site-packages\xlrd_init_.py”, line 111, in open_workbook
with open(filename, “rb”) as f:ValueError: embedded null character
查了一下,ValueError: embedded null character的意思是:嵌入的值错误:空字符
实在搞不明白这个错误怎么回事,
然后我尝试打开其他文件
filename = "D:\python\pythonProject\股票数据汇总.xlsx"
完美,完全可以运行。
看样程序代码没有什么问题。再回去运行000001.xlsx还是不行,然后我把 股票数据汇总.xlsx 改为000001.xlsx,然后运行程序,结果又不行了,我感觉问题出现在文件名上,然后,我将文件名改为1234.xlsx,运行出现如下错误:
Traceback (most recent call last):
File “D:\python\pythonProject\测试-1.py”, line 4, in
book = xlrd.open_workbook(filename, encoding_override=“utf-8”)
File “C:\Users\ThinkPad\AppData\Local\Programs\Python\Python39\lib\site-packages\xlrd_init_.py”, line 111, in open_workbook
with open(filename, “rb”) as f:
FileNotFoundError: [Errno 2] No such file or directory: ‘D:\python\pythonProjectS4.xlsx’
反复查找,在源文件上有这样一个提示
百度一下,找找别人的经验,终于明白,文件名称出现了问题。怎么解决???
单反斜杠“\”改为双反斜杠“\\”
问题解决了。
filename = “D:\python\pythonProject\000001.xlsx”
更改为
filename = “D:\python\pythonProject\\000001.xlsx”
运行程序,完美解决。
更改为 filename = “D:\\python\\pythonProject\\000001.xlsx” 更完美,连灰色波浪线都没有了。
为什么这样?还不理解,但是问题解决了,
这个错误仅出现在用数字命名的文件名上,英文字母、汉字命名的文件,没有这个问题。
程序运行结果
000001.xlsx文件的内容
运行结果
text:‘000002(万 科A)’
000002(万 科A)
[‘Sheet1’]
这里可以发现
.cell 返回的是单元格里面的所有内容,包括单元格格式定义:text:‘’+单元格内容
.cell_value 返回的是单元格里面的显示内容,仅单元格内可视内容。