app.csv - CSV 解析与生成 API
CSV 文本解析、文件读取和生成。
权限级别: L0(安全,始终可用)
方法
app.csv.parse(text, opts?)
解析 CSV 文本。
参数:
text(string) - CSV 文本内容opts(table, 可选):delimiter(string) - 分隔符(默认,)header(boolean) - 首行作为表头(默认 false)
返回值: array, error
-- 基本解析(返回二维数组)
local rows = app.csv.parse("name,age\n张三,30\n李四,25")
-- {{" name", "age"}, {"张三", "30"}, {"李四", "25"}}
-- 使用表头(返回字典数组)
local rows = app.csv.parse("name,age\n张三,30\n李四,25", {header = true})
-- {{name = "张三", age = "30"}, {name = "李四", age = "25"}}
-- TSV(制表符分隔)
local rows = app.csv.parse(tsv_text, {delimiter = "\t"})
app.csv.parseFile(path, opts?)
读取并解析 CSV 文件。
参数:
path(string) - CSV 文件路径opts(table, 可选) - 同parse()
返回值: array, error
local data, err = app.csv.parseFile("/path/to/data.csv", {header = true})
if data then
for _, row in ipairs(data) do
app.log.info(row.name .. ": " .. row.age)
end
end
app.csv.generate(rows, opts?)
从数据生成 CSV 文本。
参数:
rows(array) - 二维数组opts(table, 可选):delimiter(string) - 分隔符(默认,)
返回值: string, error
local csv = app.csv.generate({
{"name", "age", "city"},
{"张三", "30", "北京"},
{"李四", "25", "上海"}
})
app.csv.generateFile(path, rows, opts?)
生成 CSV 并写入文件。
参数:
path(string) - 输出文件路径rows(array) - 二维数组opts(table, 可选) - 同generate()
返回值: boolean, error
local ok, err = app.csv.generateFile("/path/to/output.csv", {
{"name", "score"},
{"Alice", "95"},
{"Bob", "87"}
})
示例
导出文件列表为 CSV
function MyPlugin:handleExportCSV(context)
local rows = {{"文件名", "大小", "类型"}}
for _, file in ipairs(context.selectedFiles) do
local info = app.file.info(file)
if info then
table.insert(rows, {
app.path.basename(file),
tostring(info.size),
info.type or ""
})
end
end
local outPath = app.path.join(context.currentDirectory, "file_list.csv")
local ok, err = app.csv.generateFile(outPath, rows)
if ok then
app.notification.show("完成", "已导出 " .. (#rows - 1) .. " 条记录")
app.finder.reveal(outPath)
end
end