Excelスプレッドシート
Excelスプレッドシート
Section titled “Excelスプレッドシート”Microsoft Excelファイル(.xlsx)の読み書き。ワークブックの作成、シートの管理、セル値の読み取り、フォーマットサポート付きレポートの生成。
local excel = require("excel")ワークブックの作成
Section titled “ワークブックの作成”新規ワークブック
Section titled “新規ワークブック”新しい空のExcelワークブックを作成。
local wb, err = excel.new()if err then return nil, errend
-- シートを作成してデータを追加wb:new_sheet("Report")wb:set_cell_value("Report", "A1", "Title")
wb:close()戻り値: Workbook, error
ワークブックを開く
Section titled “ワークブックを開く”リーダーオブジェクトからExcelワークブックを開く。
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
-- ワークブックからデータを読み取りlocal rows = wb:get_rows("Sheet1")for i, row in ipairs(rows) do print("Row " .. i .. ": " .. table.concat(row, ", "))end
wb:close()file:close()| パラメータ | 型 | 説明 |
|---|---|---|
reader | File | io.Readerを実装(例: fs.File) |
戻り値: Workbook, error
シートの作成
Section titled “シートの作成”新しいシートを作成するか、既存のシートインデックスを返す。
local wb = excel.new()
-- シートを作成local idx1 = wb:new_sheet("Summary")local idx2 = wb:new_sheet("Details")local idx3 = wb:new_sheet("Charts")
-- シートが存在する場合、そのインデックスを返すlocal existing = wb:new_sheet("Summary") -- idx1と同じ値を返す| パラメータ | 型 | 説明 |
|---|---|---|
name | string | シート名 |
戻り値: integer, error
ワークブック内のすべてのシート名のリストを返す。
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)end戻り値: string[], error
セル値の設定
Section titled “セル値の設定”単一セルの値を設定。
local wb = excel.new()wb:new_sheet("Data")
-- 異なる値タイプを設定wb: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)
-- セル参照はZ列を超える列もサポートwb:set_cell_value("Data", "AA1", "Extended Column")wb:set_cell_value("Data", "AB100", "Far cell")| パラメータ | 型 | 説明 |
|---|---|---|
sheet | string | シート名 |
cell | string | セル参照(“A1”、“B2”、“AA100”) |
value | any | string、integer、number、またはboolean |
戻り値: error
シートからすべての行を2次元配列として取得。
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| パラメータ | 型 | 説明 |
|---|---|---|
sheet | string | シート名 |
戻り値: string[][], error
すべてのセル値は文字列として返される。booleanは”TRUE”または”FALSE”、数値は文字列表現。
ファイル操作
Section titled “ファイル操作”ファイルへの書き込み
Section titled “ファイルへの書き込み”ワークブックをライターオブジェクトに書き込む。
local fs = require("fs")local wb = excel.new()
-- レポートを作成wb: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)
-- ファイルに書き込みlocal 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| パラメータ | 型 | 説明 |
|---|---|---|
writer | File | io.Writerを実装(例: fs.File) |
戻り値: error
ワークブックを閉じる
Section titled “ワークブックを閉じる”ワークブックを閉じてリソースを解放。
local wb = excel.new()-- ... ワークブックで作業 ...wb:close()
-- 複数回呼び出しても安全wb:close()戻り値: error
| 条件 | 種別 | 再試行可能 |
|---|---|---|
| コンテキストがない | errors.INTERNAL | no |
| 無効なワークブック | errors.INVALID | no |
| ワークブックがクローズ済み | errors.INTERNAL | no |
| リーダー/ライターではない | errors.INTERNAL | no |
| 無効なExcelファイル | errors.INTERNAL | no |
| 存在しないシート | errors.INTERNAL | no |
| 無効なセル参照 | errors.INTERNAL | no |
| 書き込み失敗 | errors.INTERNAL | no |
エラーの処理についてはエラー処理を参照。
- ファイルシステム - Excelファイルの読み書き用ファイル操作