Magik.ExcelView (Magik v0.11.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
endFields 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_nameEx::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"
endA field could be:
field_nameEx::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