xlsx_reader v0.1.2 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 serial date into a Date
.
Converts a serial date to a NaiveDateTime
.
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
Date system identified by its reference year
Supported number types identified by module name
Supported number value types
Link to this section Functions
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
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
to_date(string, base_date \\ %{__struct__: Date, calendar: Calendar.ISO, day: 30, month: 12, year: 1899})
View SourceConverts 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
to_date_time(string, base_date \\ %{__struct__: Date, calendar: Calendar.ISO, day: 30, month: 12, year: 1899})
View Sourceto_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
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
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
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
to_number(string, arg)
View Sourceto_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