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).
- Host: GitHub
- URL: https://github.com/tableauio/tableau
- Owner: tableauio
- License: mit
- Created: 2022-02-11T08:45:34.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2026-01-28T08:20:55.000Z (about 2 months ago)
- Last Synced: 2026-01-28T23:52:32.960Z (about 2 months ago)
- Topics: bin, configuration, converter, csv, excel, go, golang, json, parser, proto3, protobuf, protojson, prototext, protowire, text, xml, yaml
- Language: Go
- Homepage: https://tableauio.github.io
- Size: 1.73 MB
- Stars: 51
- Watchers: 5
- Forks: 8
- Open Issues: 56
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Modern Configuration Converter
# 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
```