今天學習東西是從一個Excel檔案中取出一個單元格的資料,并列印出來。對比cell 和 cell_vavalue 的不同。
源程式如下:
import xlrd
filename = "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 傳回的是單元格裡面的顯示内容,僅單元格内可視内容。