Skip to main content

CSV System

The CSV system provides functions for parsing CSV (Comma-Separated Values) strings and files.

Overview​

CSV files are a common format for tabular data. The CSV system allows you to parse CSV content and work with it as structured Lua tables with rows and headers.

Available Functions​

Common Use Cases​

Parsing CSV String​

local csvContent = [[
name,age,email
John,30,john@example.com
Jane,25,jane@example.com
]]
local data = parseCsvString(csvContent)
for i, row in ipairs(data.rows) do
Logger.info("Row " .. i .. ": " .. row[1] .. ", " .. row[2])
end

Reading CSV File​

local data = parseCsvFile("users.csv")
if data then
Logger.info("Headers: " .. table.concat(data.headers, ", "))
for i, row in ipairs(data.rows) do
Logger.info("User " .. i .. ": " .. row[1])
end
end

Working with Headers​

local data = parseCsvFile("data.csv")
if data.headers then
for i, header in ipairs(data.headers) do
Logger.info("Column " .. i .. ": " .. header)
end
end

Processing Rows​

local data = parseCsvFile("sales.csv")
for i, row in ipairs(data.rows) do
local name = row[1]
local amount = tonumber(row[2])
SessionState.set("lastSale", name .. ": " .. amount)
end

Return Values​

Both functions return a table with:

  • rows: Array of rows, where each row is an array of cell values
  • headers: Array of column header names (if available)

On error, returns nil and an error message string.

CSV Format​

CSV files use commas to separate values:

header1,header2,header3
value1,value2,value3
value4,value5,value6