无法使用Openpyxl在Excel中find活动或选定的单元格

我想使用python来查找当前活动工作表中当前活动或选定单元格的地址或坐标。

到目前为止,我所能做的就是后者。 也许我只是用错误的词来search。 不过,这是两年来第一次编写第一个VBA和现在的Python,我还没有能够search和find答案。 即使花了我半天的时间。
我已经通过readthedocs( http://openpyxl.readthedocs.org/en/latest/_modules/index.html )上的代码爬行,并查看了openpyxl.cell.cell,openpyxl.worksheet.worksheet,openpyxl.worksheet。查看代码。 最后似乎有一些承诺,并导致我写下面的代码。 尽pipe如此,没有什么快乐,我似乎也无法将我的在线search词组化,从而能够精确地找出结果,讨论如何find实际的活动/选定单元格。 也许这是因为openpyxl真的在查看保存的电子表格,它可能不包含最后一个单元格上的任何数据。 我已经在Python 3.4.3和2.7.11中试过了。 使用openpyxl 2.4.0。 这是使我最接近我的目标的代码。 我在Python3中运行它。

from openpyxl.worksheet.views import Selection import openpyxl wb = openpyxl.load_workbook('example.xlsx') ws = wb.active print(wb.get_sheet_names()) print(ws) print(Selection.activeCell) 

这给了我下面。

 ['Sheet1', 'Sheet2', 'Sheet3'] <Worksheet "Sheet3"> Values must be of type <class 'str'> 

我把前两个打印只是为了向自己certificate我实际上正在访问工作簿/工作表。

如果我将最后一行更改为:

 print(Selection.activeCellId) 

我得到:

 Values must be of type <class 'int'> 

我认为这是因为这些只是为了写作而不是查询。 我已经玩弄了写一个VBAmacros的想法,只是从python运行它。 但是,这些代码将与我不能控制的电子表格一起使用。 由谁不一定能解决任何问题的人。 我不认为我有能力写出足够好的东西来处理任何可能出现的问题。

任何帮助将不胜感激。

很难看到像openpyxl这样的库的活动单元的目的,因为它实际上是一个graphics用户界面(artefact)。 不过,因为openpyxl很难实现OOXML规范,所以应该可以读取以前的应用程序存储的值,或者写入它。

ws.views.sheetView[0].selection[0].activeCell

考虑win32com库来复制Excel VBA属性ActiveCell 。 对于这个属性,Openpyxl可能有一个有限的方法,而wind32com允许Python充分利用包括MS Office套件(Excel,Word,Access等)的Windows程序的COM库。 你甚至可以把文件作为一个subprocess来操作,就像你直接写VBA一样。

 import win32com.client # OPEN EXCEL APP AND SPREADSHEET xlApp = win32com.client.Dispatch("Excel.Application") xlApp.Workbooks.Open('example.xlsx') xlApp.ActiveWorkbook.Worksheets('Sheet1').Activate print(xlApp.ActiveCell) xlApp.ActiveWorkbook.Close(False) xlApp.Quit xlApp = None