lua读取xlsx表

作者在 2026-06-18 21:20:38 发布以下内容
因为要在Windows下用lua读xlsx表,找不到合适的,所以写个模块来用。
我用的是lua5.1,这个模块依赖zip和luaxml,都是lua for windows 5.1自带的。


open(xlsx文件名) 成功返回getCell/close函数,如出错,返回nil和出错信息
getCell(Sheet名, 单元格坐标) 成功返回单元格的值,不成功返回nil和出错信息
close() 关闭打开的xlsx文件
n2Time(数字) 将getCell取得的数字转换成年月日时分秒字符串,只支持1970年以后的日期
nextRow(单元格坐标,偏移量) 取下N行的坐标,偏移量可以为负,当前坐标不合法返回nil
nextCol(单元格坐标,偏移量) 取下N列的坐标,偏移量可以为负,当前坐标不合法返回nil


具体使用方法请看demo
---------------------------------------------------
require('xlsxReader')
require('lc')	--ANSI/UTF-8/UNICODE编码转换库,因为Windows下xlsx中汉字用utf-8储存

local f, err = xlsxReader.open('demo.xlsx')	--打开XLSX文件
if f then
	x = f.getCell('Sheet1', 'A1')	--Sheet名大小写敏感
	print(x)
	s = lc.a2u('表2'):sub(1, -2)	--lc库有个问题,转换出的字符串结尾会多一个0x00,一般没什么问题,但在这里做Sheet名时会出错,去掉
	x = f.getCell(s, 'B2')	    --取表2的B2格
	print((lc.u2a(x)))
	x = f.getCell('Sheet1', 'b2')	--取Sheet1的B2格
	print(xlsxReader.n2Time(x))
	x = f.getCell('Sheet1', xlsxReader.nextRow('A10', -1))	--取Sheet1的A10格的上一行
	print(x)
	x = f.getCell('Sheet1', xlsxReader.nextCol('A1', 1))	--取Sheet1的A1格的下一列
	print((lc.u2a(x)))
	f.close()
else
	print(err)
end
xlsxReader.zip (62.51 KB)


Lua | 阅读 731 次
文章评论,共0条
游客请输入验证码
浏览46272次