如何在Lua中读取和parsingexcel文件?

我想读取一个xls文件,然后parsing它。 我怎样才能做到这一点与Lua? 谢谢。

这不是重复的,因为他实际上只是想从excel文件中读取数据并parsing数据 – 而不是操作excel对象。

每当我必须这样做,我使用ADO使用luasql 。 在最基本的层面上,如果你知道你的查询的每一行有多less个字段,你可以用它来打开数据库连接并读取它的excel数据。

function rows(connection, sql_stmt) local cursor = assert(connection:execute(sql_stmt)) return function() return cursor:fetch() end end local fpath = "path/to/file.xlxs" local constr = "Provider=Microsoft.ACE.OLEDB.12.0;".. "Data Source=\""..fpath.."\";".. "Extended Properties=\"Excel 12.0 Xml;HDR=YES\""; local env = assert(luasql.ado()) local con = assert(env:connect(constr)) -- the name of the worksheet needs to be surrounded by brackets, and end -- with a '$' sign. local query = "SELECT * FROM \[name_of_worksheet$\]" -- you can do this if you know how many fields you get back specifically. for field1, field2, field3, ... in rows(con, query) do -- handle any parsing of data from a row, here. end con:close() env:close() 

如果你不知道你有多less领域,你可以这样做:

 local fpath = "path/to/file.xlxs" local constr = "Provider=Microsoft.ACE.OLEDB.12.0;".. "Data Source=\""..fpath.."\";".. "Extended Properties=\"Excel 12.0 Xml;HDR=YES\""; local env = assert(luasql.ado()) local con = assert(env:connect(constr)) -- the name of the worksheet needs to be surrounded by brackets, and end -- with a '$' sign. local query = "SELECT * FROM \[name_of_worksheet$\]" -- if you didn't know how many fields you might get back per row, i -- believe you can do this to iterate over each row... local cursor = con:execute(query) local t = {} local results = cursor:fetch(t) while results ~= nil do for k,v in pairs(results) do -- check each field in the row here end results = con:fetch(t) end cursor:close() con:close() env:close() 

确保在完成游戏时closures游标/连接/环境。 另外,您还需要validation上面的连接string是否适用于您的Excel版本。 确定您需要的连接string的最简单方法是访问www.connectionstrings.com并浏览正确的连接string。

Interesting Posts