Skip to content

Convert xlsx/ods format tables to typst tables, powered by wasm.

License

Notifications You must be signed in to change notification settings

hongjr03/typst-ReXLlenT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🦖 ReXLlenT

ReXLlenT is a typst package that helps you:

  • Convert Excel xlsx tables to typst tables, powered by wasm.
  • Convert Spreet parsed tables to typst tables. (Supports excel/opendocument spreadsheets but doesn't support parsing styles or merge cells.)

Usage

Start by importing the package:

#import "@preview/rexllent:0.3.0": xlsx-parser

Then you can use xlsx-parser function to convert your xlsx Excel table to typst table. Here is an example:

#xlsx-parser(read("test.xlsx", encoding: none))

By passing sheet-index parameter, you can specify the sheet index to parse. The default value is 0.

#xlsx-parser(read("test.xlsx", encoding: none), sheet-index: 1)

By toggling parameters below, you can customize the output table:

  • parse-table-style: Parse table style(columns width, rows height), default is true.
  • parse-alignment: Parse cell content alignment, default is true.
  • parse-stroke: Parse cell stroke, default is true.
  • parse-fill: Parse cell fill, default is true.
  • parse-font: Parse font style, default is true.
  • parse-header: Parse header row, default is false.

Note

Notice that 0pt height or 0pt width will be parsed as auto. Disable parse-table-style to prevent this behavior and set the width and height manually.

Extra arguments passed to xlsx-parser function will be passed to table. Feel free to customize the output table. For the prepend elements(for example: header, hline) you should pass them as array to prepend-elems parameter.

#xlsx-parser(
  read("test.xlsx", encoding: none),
  parse-header: true,
  parse-stroke: false,
  prepend-elems: (table.hline()),
  stroke: (_, y) => {
    if y == 0 {
      return (bottom: black)
    }
  },
  table.hline(),
)

three-line-table

Work with Spreet

You can also convert Spreet parsed tables to typst tables. Here is an example:

#import "@preview/spreet:0.1.0"
#import "@preview/rexllent:0.3.0": spreet-parser

#spreet-parser(spreet.decode(read("/tests/data/default.ods", encoding: none)))

By passing sheet-index parameter, you can specify the sheet index to parse. The default value is 0. The extra arguments passed to spreet-parser function will be passed to table.

Through this way, you can convert excel/opendocument spreadsheets to typst tables. However, the styles and merge cells will not be parsed due to the limitation of calamine.

Example

  • Excel Table

    Excel

  • Typst Table (with default parameters)

    Typst

  • Typst Table (with parse-table-style: false)

    Typst

  • Typst Table (with parse-alignment: false)

    Typst

  • Typst Table (with parse-stroke: false)

    Typst

  • Typst Table (with parse-fill: false)

    Typst

  • Typst Table (with parse-font: false)

    Typst

  • With Custom Style

    Typst

Pixel Art

You can also convert pixel art to typst table using ReXLlenT. Here are some examples:

  • Typst Logo

    typst

  • Typst Guy

    typst_guy

  • Impression, soleil levant

    monet

TODOs

ReXLlenT is still in development and PRs are welcome. Here are some TODOs (also limitations):

  • Implement in-cell image parsing.
  • Prevent parsing errors caused by special characters.
  • Parse auto width and height instead of treating 0pt as auto.
  • Handle hidden rows and columns.
  • ...

Credits

License

This package is licensed under the MIT License.

Star History

Star History Chart

About

Convert xlsx/ods format tables to typst tables, powered by wasm.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published