CsvGenerator v0.1.1 CsvGenerator View Source
This library provides an easy way to generate CSV files. It allows you to define the colums and their respective types.
Example
defmodule MyCSV do
use CsvGenerator
column :name, :string
column :joined, :date, format: "%d-%m-%Y"
column :points, :integer, label: "points earned"
end
You would then render the CSV bij calling the render/1
method with
the list of lines to render.
Example
iex> MyCSV.render([
%{ name: "Chris McCord", joined: ~D[2020-01-01], points: 110},
%{ name: "Jose Valim", joined: ~D[2020-03-29], points: 10} ])
"\"name\",\"joined\",\"points earned\"\n\"Chris McCord\",01-01-2020,110\n\"Jose Valim\",29-03-2020,10"
By default the CSV columns will be seperated by a ","
, the lines by a "\n"
.
This can be changed by using delimiter
and line_ending
.
Example
defmodule MyCSV do
use CsvGenerator
delimiter ";"
line_ending "\r\n"
column :name, :string
column :birthday, :date, format: "%d-%m-%Y"
column :points, :integer
end
iex> MyCSV.render([
%{ name: "Jose Valim", joined: ~D[2020-03-29], points: 10} ])
"\"name\";\"joined\";\"points earned\"\n\"Jose Valim\";29-03-2020;10"
Link to this section Summary
Functions
Defines a column in the CSV.
Specify the decimal point, default: "."
Specify the character to use as column delimiter, default: ","
Specify the line ending to use, default: "\n".
Link to this section Functions
Defines a column in the CSV.
column name, type, options
The column name will be used to select the value from the given input.
The following types are currently supported:
Type | Elixir type | Default format |
---|---|---|
:string | String | n/a |
:integer | Integer | n/a |
:float | Float | n/a |
:date | Date | "%Y-%m-%d" |
:time | DateTime or Integer | "%H:%M" |
:datetime | DateTime | "%Y-%m-%d %H:%M:%S" |
For :date
, :time
, and :datetime
, any of the Date(Time) types that
are compatible with Calendar.Strftime.strftime/2
are allowed.
:time
also allows an Integer
value that represents the time within a day.
Options
:header
- Use this instead of the name for column header.:format
- Supply a different format string, see https://hexdocs.pm/calendar/readme.html.:digits
- Supply the number of digits for aFloat
.:with
- Specifies a function to be called on the value before processing.column :value, :integer, with: &calc/1 or column :value, :integer, with: fn(x) -> x * 2 end
:source
- Use another field as the source for this column, this allows you to use the same column multiple times.
Specify the decimal point, default: "."
Example
decimal_point ","
Specify the character to use as column delimiter, default: ","
Example
delimiter ";"
Specify the line ending to use, default: "\n".
Example
line_ending " "