Excel-Tabellen
Excel-Tabellen
Abschnitt betitelt „Excel-Tabellen“Lesen und schreiben Sie Microsoft Excel-Dateien (.xlsx). Erstellen Sie Arbeitsmappen, verwalten Sie Tabellenblätter, lesen Sie Zellwerte und generieren Sie Berichte mit Formatierungsunterstützung.
local excel = require("excel")Arbeitsmappen erstellen
Abschnitt betitelt „Arbeitsmappen erstellen“Neue Arbeitsmappe
Abschnitt betitelt „Neue Arbeitsmappe“Erstellt eine neue leere Excel-Arbeitsmappe.
local wb, err = excel.new()if err then return nil, errend
-- Tabellenblätter erstellen und Daten hinzufügenwb:new_sheet("Report")wb:set_cell_value("Report", "A1", "Title")
wb:close()Gibt zurück: Workbook, error
Arbeitsmappe öffnen
Abschnitt betitelt „Arbeitsmappe öffnen“Öffnet eine Excel-Arbeitsmappe von einem Reader-Objekt.
local fs = require("fs")
local vol, err = fs.get("app:data")if err then return nil, errend
local file, err = vol:open("/reports/sales.xlsx", "r")if err then return nil, errend
local wb, err = excel.open(file)if err then file:close() return nil, errend
-- Daten aus Arbeitsmappe lesenlocal rows = wb:get_rows("Sheet1")for i, row in ipairs(rows) do print("Row " .. i .. ": " .. table.concat(row, ", "))end
wb:close()file:close()| Parameter | Typ | Beschreibung |
|---|---|---|
reader | File | Muss io.Reader implementieren (z.B. fs.File) |
Gibt zurück: Workbook, error
Tabellenblatt-Operationen
Abschnitt betitelt „Tabellenblatt-Operationen“Tabellenblatt erstellen
Abschnitt betitelt „Tabellenblatt erstellen“Erstellt ein neues Tabellenblatt oder gibt den Index eines existierenden zurück.
local wb = excel.new()
-- Tabellenblätter erstellenlocal idx1 = wb:new_sheet("Summary")local idx2 = wb:new_sheet("Details")local idx3 = wb:new_sheet("Charts")
-- Wenn Tabellenblatt existiert, gibt seinen Index zurücklocal existing = wb:new_sheet("Summary") -- gibt gleichen Wert wie idx1 zurück| Parameter | Typ | Beschreibung |
|---|---|---|
name | string | Tabellenblattname |
Gibt zurück: integer, error
Tabellenblätter auflisten
Abschnitt betitelt „Tabellenblätter auflisten“Gibt Liste aller Tabellenblattnamen in der Arbeitsmappe zurück.
local wb = excel.new()wb:new_sheet("Sales")wb:new_sheet("Expenses")wb:new_sheet("Summary")
local sheets = wb:get_sheet_list()-- sheets = {"Sheet1", "Sales", "Expenses", "Summary"}
for _, name in ipairs(sheets) do print("Sheet:", name)endGibt zurück: string[], error
Zellen-Operationen
Abschnitt betitelt „Zellen-Operationen“Zellwert setzen
Abschnitt betitelt „Zellwert setzen“Setzt den Wert einer einzelnen Zelle.
local wb = excel.new()wb:new_sheet("Data")
-- Verschiedene Werttypen setzenwb:set_cell_value("Data", "A1", "Product Name") -- stringwb:set_cell_value("Data", "B1", "Price") -- stringwb:set_cell_value("Data", "C1", "In Stock") -- string
wb:set_cell_value("Data", "A2", "Widget")wb:set_cell_value("Data", "B2", 29.99) -- numberwb:set_cell_value("Data", "C2", true) -- boolean
wb:set_cell_value("Data", "A3", "Gadget")wb:set_cell_value("Data", "B3", 49.99)wb:set_cell_value("Data", "C3", false)
-- Zellreferenzen unterstützen Spalten über Z hinauswb:set_cell_value("Data", "AA1", "Extended Column")wb:set_cell_value("Data", "AB100", "Far cell")| Parameter | Typ | Beschreibung |
|---|---|---|
sheet | string | Tabellenblattname |
cell | string | Zellreferenz (“A1”, “B2”, “AA100”) |
value | any | string, integer, number oder boolean |
Gibt zurück: error
Alle Zeilen abrufen
Abschnitt betitelt „Alle Zeilen abrufen“Holt alle Zeilen von einem Tabellenblatt als 2D-Array.
local wb = excel.new()wb:new_sheet("Report")wb:set_cell_value("Report", "A1", "Name")wb:set_cell_value("Report", "B1", "Score")wb:set_cell_value("Report", "A2", "Alice")wb:set_cell_value("Report", "B2", 95)wb:set_cell_value("Report", "A3", "Bob")wb:set_cell_value("Report", "B3", 87)
local rows, err = wb:get_rows("Report")if err then return nil, errend
-- rows[1] = {"Name", "Score"}-- rows[2] = {"Alice", "95"}-- rows[3] = {"Bob", "87"}
for i, row in ipairs(rows) do if i == 1 then print("Headers:", row[1], row[2]) else print("Data:", row[1], "scored", row[2]) endend| Parameter | Typ | Beschreibung |
|---|---|---|
sheet | string | Tabellenblattname |
Gibt zurück: string[][], error
Alle Zellwerte werden als Strings zurückgegeben. Booleans als “TRUE” oder “FALSE”, Zahlen als String-Darstellung.
Datei-Operationen
Abschnitt betitelt „Datei-Operationen“In Datei schreiben
Abschnitt betitelt „In Datei schreiben“Schreibt Arbeitsmappe in ein Writer-Objekt.
local fs = require("fs")local wb = excel.new()
-- Bericht erstellenwb:new_sheet("Monthly Report")wb:set_cell_value("Monthly Report", "A1", "Month")wb:set_cell_value("Monthly Report", "B1", "Revenue")wb:set_cell_value("Monthly Report", "A2", "January")wb:set_cell_value("Monthly Report", "B2", 45000)wb:set_cell_value("Monthly Report", "A3", "February")wb:set_cell_value("Monthly Report", "B3", 52000)
-- In Datei schreibenlocal vol, err = fs.get("app:output")if err then wb:close() return nil, errend
local file, err = vol:open("/reports/monthly.xlsx", "w")if err then wb:close() return nil, errend
local err = wb:write_to(file)file:close()wb:close()
if err then return nil, errend| Parameter | Typ | Beschreibung |
|---|---|---|
writer | File | Muss io.Writer implementieren (z.B. fs.File) |
Gibt zurück: error
Arbeitsmappe schließen
Abschnitt betitelt „Arbeitsmappe schließen“Schließt Arbeitsmappe und gibt Ressourcen frei.
local wb = excel.new()-- ... mit Arbeitsmappe arbeiten ...wb:close()
-- Sicher mehrfach aufzurufenwb:close()Gibt zurück: error
| Bedingung | Art | Wiederholbar |
|---|---|---|
| Kein Kontext | errors.INTERNAL | nein |
| Ungültige Arbeitsmappe | errors.INVALID | nein |
| Arbeitsmappe geschlossen | errors.INTERNAL | nein |
| Kein Reader/Writer | errors.INTERNAL | nein |
| Ungültige Excel-Datei | errors.INTERNAL | nein |
| Nicht existierendes Tabellenblatt | errors.INTERNAL | nein |
| Ungültige Zellreferenz | errors.INTERNAL | nein |
| Schreiben fehlgeschlagen | errors.INTERNAL | nein |
Siehe Fehlerbehandlung für die Arbeit mit Fehlern.
Siehe auch
Abschnitt betitelt „Siehe auch“- Dateisystem - Dateioperationen zum Lesen/Schreiben von Excel-Dateien