Magik.ExcelView (Magik v0.10.0) View Source
ExcelView helps to render Excel content for Elixlsx
easier
Use as a view
defmodule TestView do
use Magik.ExcelView
# render list or stream
def render_content(user_list) do
fields = [:name, :email, :age, :is_teenager]
render_row(user_list, fields)
# or render with assigns
render_row(user_list, fields, %{message: "hi"})
end
# by default raw value of the item is used
# here we define custom render for a specific view
def render_field(:is_teenager, user) do
if user.age < 20, do: "YES", else: "NO"
end
end
Fields Could be a real field in the data or virtual field. If it's virtual field, you have to define a custom render function as described below. A field could be:
field_name
Ex::name
{field, format}
Ex:{:name, bold: true, italic: true}
Custom render You can define custom render function for specific field
render_field(field_name, struct)
render_field(field_name, struct, assigns)
Use without view
ExcelView
can be used without defining a view.
def render_excel_data (user_list) do
fields = [
:name,
{:email, bold: true},
:age,
{:is_teenager, &/is_teenager/1}
]
Magik.ExcelView.rener_row(user_list, fields)
# or with assigns
Magik.ExcelView.rener_row(user_list, fields, %{custom: "custom"})
end
def is_teenager(user) do
if user.age < 20, do: "YES", else: "NO"
end
A field could be:
field_name
Ex::name
{field, format}
Ex:{:name, bold: true, italic: true}
{field, render_func}
{field, render_func, format}
Render functions would be accepted
func(struct)
func(field_name, struct)
Link to this section Summary
Functions
render cell without view, in this case, field must be a tuple of
Link to this section Functions
render cell without view, in this case, field must be a tuple of
{field, render_fn, format}
{field, render_fn}
{field, format}
field_name
render cell with a view, view must define render_cell/2
for each field
field definition format:
{field_name, format}
field_name