Code Monkey home page Code Monkey logo

ex_workerbook's Introduction

ExWorkerbook (WIP THIS IS NOT AVAILABLE IN HEX)

Elixir workbook generator.

Templates

To generate Workbook templates simply implement the ExWorkerbook behavior and workerbook/1 callback function to return your Workerbook configuration. Workerbook Template configuration is a keyword list of options that describes how to generate each Elixlsx.Sheet via ExWorkerbook.Builder.

Here's an example:

[
  [
    name: "Our First Page",
    jobs: [
      %{
        arg: %{
          "Name" => "John",
          "Age" => 19,
          "Location" => "USA"
        },
        identifier: :horizontal,
        actions: %{},
        options: []
      }
    ]
  ]
]

This configuration will create our first page and render a map to the sheet in a horizontal layout. With the workerbook/1 callback function you can describe the layout for your workbooks and supply the params at runtime.

Here's an example:

defmodule ExWorkerbook.ExampleTemplate do

  @behaviour ExWorkerbook

  @impl ExWorkerbook
  def workerbook(attrs) do
    [
      sheet("1", attrs),
      sheet("2", attrs)
    ]
  end

  defp sheet("1", attrs) do
    [
      name: "Our First Page",
      identifier: :horizontal, # global identifier
      jobs: [
        %{
          arg: %{
            "Name" => attrs.name,
            "Age" => 19,
            "Location" => "USA"
          },
          actions: %{},
          options: []
        }
      ]
    ]
  end

  defp sheet("2", attrs) do
    [
      name: "Second Page",
      jobs: [
        %{
          arg: ["role", attrs.role],
          identifier: :horizontal,
          actions: %{},
          options: [
            all: [bg_color: "#000000"],
            values: [underline: true]
          ]
        }
      ]
    ]
  end
end

Now you can create a new excel workbook file with params:

ExWorkerbook.write("example.xlsx", ExWorkerbook.ExampleTemplate, %{name: "john", role: "manager"}) 

Installation

If available in Hex, the package can be installed by adding ex_workerbook to your list of dependencies in mix.exs:

def deps do
  [
    {:ex_workerbook, "~> 0.1.0"}
  ]
end

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/ex_workerbook.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.