Packages

Elixlsx is a writer for the MS Excel OpenXML format (`.xlsx`).

Current section

Files

Jump to
elixlsr lib elixlsx workbook.ex
Raw

lib/elixlsx/workbook.ex

defmodule Elixlsx.Workbook do
@moduledoc ~S"""
Root structure for excel files.
Must contain at least one Elixlsx.Sheet object.
The datetime property can optionally be set to override
the "created at" date. It defaults to the current time.
"""
alias Elixlsx.Sheet
alias Elixlsx.Workbook
defstruct sheets: [], datetime: nil
@type t :: %Workbook{
sheets: nonempty_list(Sheet.t()),
datetime: String.t() | integer | nil
}
@doc "Append a sheet at the end."
@spec append_sheet(Workbook.t(), Sheet.t()) :: Workbook.t()
def append_sheet(workbook, sheet) do
update_in(workbook.sheets, &(&1 ++ [sheet]))
end
@doc """
Insert a sheet at a given position, starting at 0.
"""
@spec insert_sheet(Workbook.t(), Sheet.t(), non_neg_integer) :: Workbook.t()
def insert_sheet(workbook, sheet, at \\ 0) do
update_in(workbook.sheets, &List.insert_at(&1, at, sheet))
end
end