xlsx
The xlsx module reads Microsoft Excel files (.xlsx).
xlsx = require("xlsx")Functions
open(filename)
Opens an Excel file and returns a spreadsheet object.
xlsx = require("xlsx")
spreadsheet, err = xlsx.open("report.xlsx")
if not spreadsheet then
print(err)
os.exit(-1)
end
-- Number of worksheets
print(#spreadsheet)
-- Access first worksheet (1-based)
ws = spreadsheet[1]string_to_date(string)
Converts an Excel date number (as string) to a table with date/time fields.
xlsx = require("xlsx")
d = xlsx.string_to_date("45678")
print(d.year, d.month, d.day)
print(d.hour, d.minute, d.second)Worksheet object
A worksheet provides cell access and metadata.
Reading cells
Call the worksheet with (row, column) to read a cell value (1-based).
ws = spreadsheet[1]
-- Cell A1 (row 1, column 1)
val = ws(1, 1)
-- Cell C5 (row 5, column 3)
val = ws(5, 3)Properties
| Property | Description |
|---|---|
ws.name |
Worksheet name |
ws.minrow |
First row with data |
ws.maxrow |
Last row with data |
ws.mincol |
First column with data |
ws.maxcol |
Last column with data |
Example: iterate all cells
xlsx = require("xlsx")
xml = require("xml")
spreadsheet, err = xlsx.open("products.xlsx")
if not spreadsheet then
print(err)
os.exit(-1)
end
ws = spreadsheet[1]
-- Build XML from spreadsheet data
root = {
type = "element",
name = "data",
}
for row = ws.minrow, ws.maxrow do
local item = {
type = "element",
name = "row",
}
for col = ws.mincol, ws.maxcol do
item[#item + 1] = {
type = "element",
name = "cell",
ws(row, col),
}
end
root[#root + 1] = item
end
xml.encode_table(root, "data.xml")