感谢您的回答,肖利。
问题在于我什至不知道如何开始通过 lua 访问、打开、编辑或以其他方式使用 Excel,因此任何代码示例几乎都是无用的。因此,我认为最好描述我需要什么,而不是用处理完全不同事物的代码 sn-ps 来误导。 (比如io.open等)
与往常一样,经过大量 - 大量 - 研究和浏览 3 种不同的手册并重新阅读谁知道有多少不相关的答案,我找到了一个适合我的答案。它实际上非常简单,所以我无法想象有多少人可以用五分钟的答案为我节省数小时的研究时间。让我们希望通过提供一个非常彻底的答案,我可以确保像我这样希望做同样事情的其他初学者不必做同样多的研究。是的,答案非常基础,是的,我也在解释大多数知道 lua 代码的人不需要解释的东西。这是给像我这样的初学者的。
首先:下载“Lua for Windows”
http://code.google.com/p/luaforwindows/
Lua 本身不能处理 excel 格式,因此您需要使用插件 LUACOM,它是通过“Lua for Windows”安装的模块之一
它还包括一个漂亮的脚本编辑器,您可以在其中右键单击您的脚本文件,单击编辑脚本,并且您有一个很好的界面来编辑和测试您的脚本。
实际脚本:
脚本的第一部分要求您通过 luacom 使用 Excel。
require('luacom')
excel = luacom.CreateObject("Excel.Application")
excel.Visible = true
a.“require”行告诉 lua 它需要模块“luacom”,才能使用该 lua 脚本的 modules 功能。
b.通过 luacom 的第二行打开一个 Excel 实例,该实例在脚本中称为“excel”。这对于使用命令来定位它是必要的。
c。 excel.Visible 确定打开的 excel 实例是否可以被用户看到,或者它使用的是否不可见。注意“excel”。我们在第 2 行中称为“excel”的实例的参考点。
(替代)
也可以通过将第二行替换为以下内容来定位已由用户手动打开的现有 excel 实例:
excel = luacom.GetObject("Excel.Application")
如果我们使用另一种方法,并针对已经打开的 excel 程序,我们已经可以针对第一张表中的所有值。但是,如果我们创建一个新的 excel 实例,我们必须打开我们希望从中读取的文件。
fpath = "C:\\Examplepath\\Example.xlsx"
wb = excel.Workbooks:Open(fpath)
ws = wb.Worksheets("ImportantSheet1")
一个。在本部分的第一行中,fpath 确定了我们希望访问的 xlsx 文件的位置。请注意,使用“\”而不是“\”。
b.我们在第一部分代码中创建了类似于“excel 参考”的参考“wb”。然而,这会在位置 (fapth) 处打开一个工作簿文件(您的 excel 文件)。同样,请注意“excel.”如何指向代码在我们之前创建的 excel 实例中。
c。此行确定要在刚刚打开的 Workbook 文件中打开哪个工作表。在本例中,它是名为“ImportantSheet1”的工作表。
desired_name = "whatIseek"
for row=1, 4 do
for col=1, 4 do
local cell_location = excel.Cells(row, col).Value2
if cell_location == desired_name then
Value1 = excel.Cells(row, col +1).Value2
Value2 = excel.Cells(row, col +2).Value2
Value3 = excel.Cells(row, col +3).Value2
end
end
end
print(Value1)
print(Value2)
print(Value3)
一个。 desired_name 设置我们寻求的值(在本例中为字符串)
b.第 2 行和第 3 行确定要对第 1-4 行和第 1-4 列执行以下过程,尽管您不必将它们称为“行”或“列”。
c。下一行将变量“当前单元格”的值设置为 excel 中位置 (x, y) 处的单元格的值。您需要在此命令中使用“.Value2”(而不是“.Value”)。所以现在我们的临时变量有了单元格的值。
d。在“if”命令中,我们检查单元格的当前值是否等于我们之前指定的值,即我们寻找的“desired_name”。
e。如果是这种情况,则“然后”接下来的 3 行将值 1-3 设置为同一行中下一列中的单元格。 (所以它从左到右“读取”下一个值并将它们保存为我们的变量)
f。最后,为了检查我们是否真的有我们想要的值,我们在执行脚本时使用 print 命令来查看它们。 (当然,这不是必须使用这些值,这只是为了检查此脚本是否有效)