在本地PC和Windows Server中运行时,Python提供不同的结果

时间:2018-07-26 09:40:04

标签: python winapi windows-server-2016 xlwings

我在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()

我遇到的不同结果:

  1. 本地PC:
    • sht= scBk.Worksheets[1]-> "T16_T"
    • rngtofind.Address-> $C$6Total
  2. Windows服务器,修改代码后:
    • sht= scBk.Worksheets[1]-> "T16_T"
    • rngtofind.Address-> $B$3(TOTAL)

有什么办法可以解决此问题?仅供参考,我希望应用相同的代码,并且不想同时维护2个不同版本的代码。

其他信息:

  • Python 3.6
  • Pycharm
  • Windows 7-64位
  • Windows Server 2016-64位 Sample case "T16_T" Sample case "T16_M"

编辑: 为了避免按照IInspectable的说明使用工作表中的索引,提出了另一种搜索解决方案。请参考代码。

0 个答案:

没有答案