基于xlsxio实现的Lua版xlsx读写库.
-
使用
apt、yum等工具安装libexpat、minizip/libzip(二选一); -
下载
xlsxio并且解压, 然后使用CMAKE构建并安装; -
将本库克隆到
cfadmin的3rd目录下, 并且使用make build命令进行编译. -
开始使用.
local lxlsx = require "lxlsx"function lxlsx:new() return xlsx end创建一个用于读/写xlsx的C对象.
-- 以读模式打开文件
function xlsx:ropen() return boolean, string end-- 获取所有工作簿名称
function xlsx:get_sheets_name() return { sheet1, sheet1, sheet1} end以数组形式返回所有工作簿名称.
-- 获取指定`sheet_name`下所有内容
function xlsx:lget_sheet_all(sheet_name) return table end以数组形式返回指定工作簿名的所有内容.
-- 以写模式打开文件
function xlsx:wopen() return boolean, string end成功返回true, 失败返回false与出错原因.
这两个方法没成功, 不可调用之后的方法。
-- 写入内容
function xlsx:add_column(text) return true end将字符串类型的text写入到当前游标的指向的单元格.
-- 设置换行
function xlsx:next_line() return true end从当前行尾换到下一行首.
-- 关闭
function xlsx:close() end关闭调用ropen与wopen打开的文件, 如果没有打开则不做任何操作.
以下示例可以在test.lua文件中找到.
require "utils"
local lxlsx = require "lxlsx"
local xls = lxlsx:new()
assert(xls:wopen("test.xlsx", "sheet1"))
xls:add_column("名称"); xls:add_column("公司"); xls:add_column("年龄")
xls:next_line()
xls:add_column("水果糖"); xls:add_column("Netease"); xls:add_column("30")
xls:next_line()
xls:add_column("中二丸"); xls:add_column("未知"); xls:add_column("26")
xls:close()
assert(xls:ropen("test.xlsx"))
var_dump(xls:get_sheets_name())
var_dump(xls:get_sheet_all("sheet1"))-
wopen会立刻创建文件, 但是必须调用close才会将数据写入到文件. -
ropen/wopen可以分别打开2个同一文件或不同文件, 但是close会同时关闭他们.