xlsx_reader v0.2.0 XlsxReader.Conversion View Source

Conversion of cell values to Elixir types.

Link to this section Summary

Types

Date system identified by its reference year

Supported number types identified by module name

Supported number value types

Functions

Returns the base date for the given date system.

Converts the string representation of a truth value into to a boolean.

Converts a string into an arbitrary precision decimal.

Converts a string into a float.

Converts a string into an integer.

Converts a string into the given number type.

Link to this section Types

Link to this type

date_system()

View Source
date_system() :: 1900 | 1904

Date system identified by its reference year

Link to this type

number_type()

View Source
number_type() :: Integer | Float | Decimal | String

Supported number types identified by module name

Link to this type

number_value()

View Source
number_value() :: integer() | float() | Decimal.t() | String.t()

Supported number value types

Link to this section Functions

Link to this function

base_date(arg1)

View Source
base_date(date_system()) :: Date.t() | :error

Returns the base date for the given date system.

Examples

iex> XlsxReader.Conversion.base_date(1900)
~D[1899-12-30]

iex> XlsxReader.Conversion.base_date(1904)
~D[1904-01-01]

iex> XlsxReader.Conversion.base_date(2019)
:error
Link to this function

to_boolean(arg1)

View Source
to_boolean(String.t()) :: {:ok, boolean()} | :error

Converts the string representation of a truth value into to a boolean.

Cells with type attribute "b" store boolean values as a single digit: "1" or "0".

## Examples

iex> XlsxReader.Conversion.to_boolean("1")

iex> XlsxReader.Conversion.to_boolean("0")

iex> XlsxReader.Conversion.to_boolean("true") :error

Link to this function

to_date(string, base_date \\ %{__struct__: Date, calendar: Calendar.ISO, day: 30, month: 12, year: 1899})

View Source
to_date(String.t(), Date.t()) :: {:ok, Date.t()} | :error

Converts a serial date into a Date.

Examples

iex> XlsxReader.Conversion.to_date("40396")
{:ok, ~D[2010-08-06]}

iex> XlsxReader.Conversion.to_date("43783")
{:ok, ~D[2019-11-14]}

iex> XlsxReader.Conversion.to_date("1", ~D[1999-12-31])
{:ok, ~D[2000-01-01]}

iex> XlsxReader.Conversion.to_date("-1", ~D[1999-12-31])
:error
Link to this function

to_date_time(string, base_date \\ %{__struct__: Date, calendar: Calendar.ISO, day: 30, month: 12, year: 1899})

View Source
to_date_time(String.t(), Date.t()) :: {:ok, NaiveDateTime.t()} | :error

Converts a serial date to a NaiveDateTime.

Examples

iex> XlsxReader.Conversion.to_date_time("43783.0")
{:ok, ~N[2019-11-14 00:00:00]}

iex> XlsxReader.Conversion.to_date_time("43783.760243055556")
{:ok, ~N[2019-11-14 18:14:45]}

iex> XlsxReader.Conversion.to_date_time("0.4895833333333333")
{:ok, ~N[1899-12-30 11:45:00]}

iex> XlsxReader.Conversion.to_date_time("1.760243055556", ~D[1999-12-31])
{:ok, ~N[2000-01-01 18:14:45]}

iex> XlsxReader.Conversion.to_date_time("-30.760243055556", ~D[1999-12-31])
:error
Link to this function

to_decimal(string)

View Source
to_decimal(String.t()) :: {:ok, Decimal.t()} | :error

Converts a string into an arbitrary precision decimal.

Examples

iex> XlsxReader.Conversion.to_decimal("123")
{:ok, %Decimal{coef: 123, exp: 0, sign: 1}}

iex> XlsxReader.Conversion.to_decimal("-123.45")
{:ok, %Decimal{coef: 12345, exp: -2, sign: -1}}

iex> XlsxReader.Conversion.to_decimal("0.12345e3")
{:ok, %Decimal{coef: 12345, exp: -2, sign: 1}}

iex> XlsxReader.Conversion.to_decimal("0.12345E3")
{:ok, %Decimal{coef: 12345, exp: -2, sign: 1}}

iex> XlsxReader.Conversion.to_decimal("bogus")
:error
Link to this function

to_float(string)

View Source
to_float(String.t()) :: {:ok, float()} | :error

Converts a string into a float.

Examples

iex> XlsxReader.Conversion.to_float("123")
{:ok, 123.0}

iex> XlsxReader.Conversion.to_float("-123.45")
{:ok, -123.45}

iex> XlsxReader.Conversion.to_float("0.12345e3")
{:ok, 123.45}

iex> XlsxReader.Conversion.to_float("0.12345E3")
{:ok, 123.45}

iex> XlsxReader.Conversion.to_float("bogus")
:error
Link to this function

to_integer(string)

View Source
to_integer(String.t()) :: {:ok, integer()} | :error

Converts a string into an integer.

Examples

iex> XlsxReader.Conversion.to_integer("123")
{:ok, 123}

iex> XlsxReader.Conversion.to_integer("-123")
{:ok, -123}

iex> XlsxReader.Conversion.to_integer("123.45")
:error

iex> XlsxReader.Conversion.to_integer("bogus")
:error
Link to this function

to_number(string, arg)

View Source
to_number(String.t(), number_type()) :: {:ok, number_value()} | :error

Converts a string into the given number type.

Supported number types are: Integer, Float, String or Decimal (requires the decimal library)

Examples

iex> XlsxReader.Conversion.to_number("123", Integer)
{:ok, 123}

iex> XlsxReader.Conversion.to_number("-123.45", Float)
{:ok, -123.45}

iex> XlsxReader.Conversion.to_number("0.12345e3", Float)
{:ok, 123.45}

iex> XlsxReader.Conversion.to_number("-123.45", Decimal)
{:ok, %Decimal{coef: 12345, exp: -2, sign: -1}}

iex> XlsxReader.Conversion.to_number("0.12345E3", Decimal)
{:ok, %Decimal{coef: 12345, exp: -2, sign: 1}}

iex> XlsxReader.Conversion.to_number("-123.45", String)
{:ok, "-123.45"}

iex> XlsxReader.Conversion.to_number("0.12345e3", String)
{:ok, "0.12345e3"}

iex> XlsxReader.Conversion.to_number("123.0", Integer)
:error