我在PC和Windows服务器上运行相同的python脚本。指向相同的项目解释器(C:\Users\<username>\AppData\Local\Programs\Python\Python36-32\python.exe
),并使用相同的版本和软件包。我的代码在本地PC上运行完美,但在服务器上产生了不同的结果。这是代码:
import win32com.client as xl
import xlwings.constants
bookName = r'C:\Users\<username>\Desktop\Python_Projects\test_case.xlsx'
# in server the path is 'D:\Programmer\Python\test_case.xlsx'
sf = xl.DispatchEx("Excel.Application")
scBk = sf.Workbooks.Open(bookName)
#to find sheet "T16_T"
#sht= scBk.Worksheets[1] -->old code
#edit with this new code
for list_sht in scBk.Sheets:
sht= scBk.Worksheets[list_sht.Name]; break
sf.Visible = True
rngtofind= sht.Cells.Find(What='Total', LookAt=xlwings.constants.LookAt.xlWhole, LookIn=xlwings.constants.FindLookIn.xlFormulas, MatchCase = False)
If rngtofind is not None:
print(rngtofind.Address)
scBk.Close()
sf.Quit()
我遇到的不同结果:
sht= scBk.Worksheets[1]
-> "T16_T"
rngtofind.Address
-> $C$6
,Total
sht= scBk.Worksheets[1]
-> "T16_T"
rngtofind.Address
-> $B$3
,(TOTAL)
有什么办法可以解决此问题?仅供参考,我希望应用相同的代码,并且不想同时维护2个不同版本的代码。
其他信息:
编辑: 为了避免按照IInspectable的说明使用工作表中的索引,提出了另一种搜索解决方案。请参考代码。