Lua WinAPI - 从Microsoft Excel中读取单元格

我正在尝试从运行的 Excel 2007 文档的单元格中读取值。我正在使用 LuaWinAPI 扩展。我目前正在运行 Windows XP 计算机(如果这很重要的话,但 WinAPI 似乎从 XP 开始就能工作)。

这是我的 Excel 文档:

Excel

这是我的 Lua 代码:

require 'winapi'

w = winapi.find_window_match('Book1') -- Specify the name of the window

w:show() -- Set the visability

w:set_foreground() -- Bring this window to the foreground

handle = w:get_handle() -- Get window handle

t = {} -- Create a table

w:enum_children(function(w) table.insert(t,w) end) -- Enumerate all children

for k,v in pairs(t) do -- Print out all pairs in the table
    print("",k,"=",v)
end

这是我的 Lua 代码输出:

code output

有人知道我应该如何递归枚举以找到每个单元格吗?或者有没有更好的方法去实现这个?我想要的文本是“1234”。我自从喜欢 Unix 以来就没有做过太多的 Windows 编程,但看起来我正在走上正确的轨道,只是不知道该怎么继续下去!

点赞
用户1386054
用户1386054

我怀疑 Excel 在电子表格中不是为每个单元格使用一个窗口,因此尝试通过导航窗口层次结构来访问单元格很可能是一条死路。

如果可能的话,我建议将数据导出到常见的文件类型,如逗号分隔值,并让你的程序解析它。

或者,你可以阅读有关 UI Automation 的文章,这是像屏幕阅读器之类的工具如何访问 Windows 应用程序 UI 中的数据的方法。我从未这样做过,但这看起来可能是很多工作。尽管如此,我认为这是尝试通过其用户界面从 Windows 应用程序获取数据的最可靠、支持的方法。

2013-06-10 22:13:27