#xlsx #usv #import-export #export #import #data #unicode-characters

bin+lib xlsx-to-usv

XLSX to USV: Convert Microsoft Excel (XLSX) to Unicode Separated Values (USV) for data markup, including for spreadsheets, databases, text files, and more

12 releases (stable)

1.2.4 Apr 11, 2024
1.2.2 Apr 4, 2024
1.2.1 Mar 26, 2024
0.4.0 Mar 21, 2024
0.1.0 Mar 18, 2024

#1139 in Encoding

29 downloads per month

MIT OR Apache-2.0 OR GPL-2.0 OR GPL-3.0

33KB
353 lines

xlsx-to-usv

Convert Microsoft Excel (XLSX) to Unicode Separated Values (USV). Built with the USV Rust crate.

Syntax:

stdin | xlsx-to-usv [options] | stdout

Example:

cat example.xlsx | xlsx-to-usv

More examples below.

Options

Options for USV separators and modifiers:

  • -u, --unit-separator : Set the unit separator (US) string.

  • -r, --record-separator : Set the record separator (RS) string.

  • -g, --group-separator : Set the group separator (GS) string.

  • -f, --file-separator : Set the file separator (FS) string.

  • -e, --escape : Set the escape (ESC) string.

  • -z, --end-of-transmission : Set the end of transmission (EOT) string.

Options for USV style:

  • --style-braces : Set the style to use braces, such as "{US}" for Unit Separator.

  • --style-controls : Set the style to use controls, such as "\u{001F}" for Unit Separator.

  • --style-symbols : Set the style to use symbols, such as "␟" for Unit Separator.

Options for USV layout:

  • --layout-0: Show each item with no line around it. This is no layout, in other words one long line.

  • --layout-1: Show each item with one line around it. This is like single-space lines for long form text.

  • --layout-2: Show each item with two lines around it. This is like double-space lines for long form text.

  • --layout-units: Show each unit on one line. This can be helpful for line-oriented tools.

  • --layout-records: Show each record on one line. This is like a typical spreadsheet sheet export.

  • --layout-groups: Show each group on one line. This can be helpful for folio-oriented tools.

  • --layout-files: Show one file on one line. This can be helpful for archive-oriented tools.

Options for command line tools:

  • -h, --help : Print help

  • -V, --version : Print version

  • -v, --verbose... : Set the verbosity level: 0=none, 1=error, 2=warn, 3=info, 4=debug, 5=trace. Example: --verbose …

  • --test : Print test output for debugging, verifying, tracing, and the like. Example: --test

Install

Install:

cargo install xlsx-to-usv

Link: https://crates.io/crates/xlsx-to-usv

Example

Excel and USV have similar data concepts:

Excel USV
Workbook File
Worksheet Group
Row Record
Cell Unit

Suppose file example.xlsx contains this kind of data:

Worksheet 1
a,b
c,d

Worksheet 2
d,e
f,g

Run:

cat example.xlsx | xlsx-to-usv

Output:

Worksheet 1␟␞
a␟b␟␞
c␟d␟␞
␝
Worksheet 2␟␞
e␟f␟␞
g␟h␟␞
␝

If you prefer ASCII Separated Values (ASV) with zero-width character controls:

Run:

cat example.xlsx | xlsx-to-usv --style-controls

Output:

Worksheet 1\u{001F}\u{001E}
a\u{001F}b\u{001F}\u{001E}
c\u{001F}d\u{001F}\u{001E}
\u{001D}
Worksheet 2\u{001F}\u{001E}
e\u{001F}f\u{001F}\u{001E}
g\u{001F}h\u{001F}\u{001E}
\u{001D}

If you prefer to render markers with braces, to see the markers more easily:

cat example.xlsx | xlsx-to-usv --style-braces

Output:

Worksheet 1{US}{RS}
a{US}b{US}{RS}
c{US}d{US}{RS}
{GS}
Worksheet 2{US}{RS}
e{US}f{US}{RS}
g{US}h{US}{RS}
{GS}

For more, see the official repository:
Unicode Separated Values (USV)

FAQ

What converters are available?

When to use this command?

Use this command when you want to convert from XLSX to USV.

A typical use case is when you have XLSX data, such as a spreadsheet file, and you want to convert it to USV, such as to make the data easier to view in a terminal, or edit in a text editor, or maintain in a text format.

Our real-world use case is converting a bunch of XLSX spreadsheet exports from a variety of programs, including Excel, to USV so we're better-able to handle quoting, and multi-line data units, and Unicode characters in a wide variety of human languages.

Is USV aiming to become a standard?

Yes, USV is submitted to IETF.org as an Internet-Draft work in progress: link.

Can I build my own USV tools?

Yes, and you may freely use the USV RFC and USV Rust crate.

Help wanted

Constructive feedback welcome. Pull requests and feature requests welcome.

Tracking

  • Package: xlsx-to-usv-rust-crate
  • Version: 1.2.4
  • Created: 2024-03-09T13:33:20Z
  • Updated: 2024-04-11T18:32:40Z
  • License: MIT or Apache-2.0 or GPL-2.0 or GPL-3.0 or contact us for more
  • Contact: Joel Parker Henderson (joel@sixarm.com)

Dependencies

~7.5MB
~197K SLoC