Python读取excel文件中带公式的值的实现
在进行excel文件读取的时候,我自己设置了部分直接从公式获取单元格的值
但是用之前的读取方法进行读取的时候,返回值为空
importos importxlrd fromxlutils.copyimportcopy file_path=os.path.abspath(os.path.dirname(__file__))#获取当前文件目录 print(file_path) root_path=os.path.dirname(file_path)#获取文件上级目录 data_path=root_path+'\\data'#拼接data文件夹地址 data_file=data_path+'\\api.xlsx'#拼接excel文件地址 data=xlrd.open_workbook(data_file)#读取文件 sheet=data.sheet_by_index(0)#切换到第一个sheet defget_excel(row,col): """ excel单元格读取 :paramrow: :paramcol: :return: """ rows=sheet.nrows#获取最大行号 cols=sheet.ncols#获取最大列号 path_name=sheet.cell_value(row,col)#获取单元格值 returnrows,cols,path_name
查询之后发现普通的读取不能直接读取带单元格的值。现在采用
openpyxl下的load_workbook模块
fromopenpyxlimportload_workbook defget_xlrd(self,row,col): wb=load_workbook(self.data_file,data_only=True) ws=wb.worksheets[0] returnws.cell(row,col).value
openpyxl读取带公式的excel时,可能会存在这些问题
要么读出来是“None”,要么是“公式本身”
wb=openpyxl.load_workbook('daikuan.xlsx',data_only=True)-------读出来的是none #wb=openpyxl.load_workbook('daikuan.xlsx',data_only=False)------------读出来的是公式本身
解决办法:
公式是代码写进去的,这样读出来就是None。
手动写入公式并保存,再用openpyxl读取,能读取到公式的结果。
代码写入的公式/值,需要手动打开Excel,并保存,再用openpyxl读取,就能读取到公式了。
或者调用win32com.clientimportDispatch模块。运行下面代码后再进行读取,就能读取到数据/值
fromwin32com.clientimportDispatch defjust_open(filename=file_name): xlApp=Dispatch("Excel.Application") xlApp.Visible=False xlBook=xlApp.Workbooks.Open(filename) xlBook.Save() xlBook.Close()
到此这篇关于Python读取excel文件中带公式的值的实现的文章就介绍到这了,更多相关Python读取excel公式的值内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!