问题遇到的现象和发生背景
通过openpyxy 导入excel的时候,load_workbook对writer的path读取结果为None,从而无法读入相应表格。
Anaconda 4.11.0 内的Jupyter Lab 3.2.1
问题相关代码,请勿粘贴截图
import pandas as pd
import openpyxl
writer=pd.ExcelWriter('previous days swap curve.xlsx',engine='openpyxl')
book_with_formula=openpyxl.load_workbook('previous days swap curve.xlsx',data_only=False)
运行结果及报错内容
TypeError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_12940/738188215.py in
4
5 writer=pd.ExcelWriter('previous days swap curve.xlsx',engine='openpyxl')
----> 6 book_with_formula=openpyxl.load_workbook(writer.path,data_only=False)
F:\Anaconda\lib\site-packages\openpyxl\reader\excel.py in load_workbook(filename, read_only, keep_vba, data_only, keep_links)
314
315 reader = ExcelReader(filename, read_only, keep_vba,
--> 316 data_only, keep_links)
317 reader.read()
318 return reader.wb
F:\Anaconda\lib\site-packages\openpyxl\reader\excel.py in init(self, fn, read_only, keep_vba, data_only, keep_links)
122 definit(self, fn, read_only=False, keep_vba=KEEP_VBA,
123 data_only=False, keep_links=True):
--> 124 self.archive = _validate_archive(fn)
125 self.valid_files = self.archive.namelist()
126 self.read_only = read_only
F:\Anaconda\lib\site-packages\openpyxl\reader\excel.py in _validate_archive(filename)
76 is_file_like = hasattr(filename, 'read')
77 if not is_file_like:
---> 78 file_format = os.path.splitext(filename)[-1].lower()
79 if file_format not in SUPPORTED_FORMATS:
80 if file_format == '.xls':
F:\Anaconda\lib\ntpath.py in splitext(p)
200
201 def splitext(p):
--> 202 p = os.fspath(p)
203 if isinstance(p, bytes):
204 return genericpath._splitext(p, b'', b'/', b'.')
TypeError: expected str, bytes or os.PathLike object, not NoneType
我的解答思路和尝试过的方法
这个报错提示writer的路径为空,我print out 该writer确实也是空。
我随后尝试绝对路径和相对路径,还是不行。我还尝试把openpyxl的版本升级至最新版本以及降级至3.0.1,问题依然无法解决。
且每次执行完这段代码,路径中的文件都会被损坏。
这个问题我在CSDN看过类似的情况,看完解答后依然没有头绪。请各位专家帮忙看看,谢谢。
我想要达到的结果
能正常读取含公式及多个工作表的excel表。