An open API service indexing awesome lists of open source software.

https://github.com/tableauio/tableau

A modern configuration converter based on Protobuf (proto3).
https://github.com/tableauio/tableau

bin configuration converter csv excel go golang json parser proto3 protobuf protojson prototext protowire text xml yaml

Last synced: about 2 months ago
JSON representation

A modern configuration converter based on Protobuf (proto3).

Awesome Lists containing this project

README

          



Tableau


Modern Configuration Converter


Release Status
Testing Status
Code Coverage
GitHub release (latest SemVer including pre-releases)
go.dev
GitHub

# Tableau

A modern configuration converter based on Protobuf (proto3).

## Prerequisites

- **[Go](https://go.dev/)**: any one of the **three latest major** [releases](https://go.dev/doc/devel/release).

## Installation

### API

Simply add the following import to your code, and then `go [build|run|test]`
will automatically fetch the necessary dependencies:

```go
import "github.com/tableauio/tableau"
```

### tableauc

Install:

```bash
go install github.com/tableauio/tableau/cmd/tableauc@latest
```

## Features

- Convert **Excel/CSV/XML/YAML** to **JSON/Text/Bin**.
- Use **Protobuf** to define the structure of **Excel/CSV/XML/YAML**.
- Use **Golang** to develop the conversion engine.
- Support multiple programming languages, thanks to **Protobuf (proto3)**.

## Concepts

- Importer:
- imports a **Excel/CSV** file to a in-memory book of **Table** sheets.
- imports a **XML/YAML** file to a in-memory book of **Document** sheets.
- Parsers:
- protogen: converts **Excel/CSV/XML/YAML** files to **Protoconf** files.
- confgen: converts **Excel/CSV/XML/YAML** with **Protoconf** files to **JSON/Text/Bin** files.
- Exporter:
- protogen: exports a [tableau.Workbook](proto/tableau/protobuf/internal/workbook.proto) to a proto file.
- confgen: exports a protobuf message to a **JSON/Text/Bin** file.
- Protoconf: a dialect of [Protocol Buffers (proto3)](https://developers.google.com/protocol-buffers/docs/proto3) extended with [tableau options](proto/tableau/protobuf/tableau.proto), aimed to define the structure of Excel/CSV/XML/YAML.

## Design

See official document: [Design](https://tableauio.github.io/docs/design/overview/).

## Contribution

### Requirements

#### Protobuf

Goto [Protocol Buffers v21.12](https://github.com/protocolbuffers/protobuf/releases/tag/v21.12), choose and download the correct platform of **protoc**, then install by README.

#### protoc-gen-go

Install:

```bash
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.33.0
```