Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/prongbang/excelx
Convert array struct to XLSX format and Parse XLSX format to array struct with Golang
https://github.com/prongbang/excelx
excel go-excel go-json-to-xlsx go-xlsx go-xlsx-to-struct json-to-excel json-to-xlsx xlsx xlsx-to-struct
Last synced: 27 days ago
JSON representation
Convert array struct to XLSX format and Parse XLSX format to array struct with Golang
- Host: GitHub
- URL: https://github.com/prongbang/excelx
- Owner: prongbang
- License: mit
- Created: 2024-01-12T07:18:30.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-07-31T02:57:47.000Z (4 months ago)
- Last Synced: 2024-10-04T05:41:18.603Z (about 2 months ago)
- Topics: excel, go-excel, go-json-to-xlsx, go-xlsx, go-xlsx-to-struct, json-to-excel, json-to-xlsx, xlsx, xlsx-to-struct
- Language: Go
- Homepage:
- Size: 26.4 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# excelx
[![Go Report Card](https://goreportcard.com/badge/github.com/prongbang/excelx)](https://goreportcard.com/report/github.com/prongbang/excelx)
Convert array struct to XLSX format and Parse XLSX format to array struct with Golang
## Install
```shell
go get github.com/prongbang/excelx
```## Define struct for Convert
Add `header` for mapping in XLSX header and `no` start with 1 for sort header
```go
type Person struct {
Name string `header:"Name" no:"3"`
Age int `header:"Age" no:"1"`
City string `header:"City" no:"2"`
Other string
}
```## Using for Convert
```go
m := []MyStruct{
{"John Doe", 25, "New York", "555"},
{"Jane Doe", 30, "San Francisco", "555"},
{"Bob Smith", 22, "Chicago", "555"},
}
file, err := excelx.Convert[MyStruct](m)
```## Save the Excel file to the response writer
```go
err := excelx.ResponseWriter(file, w, "output.xlsx")
```## Using for Parse
```go
file, _, err := r.FormFile("xlsxfile")
persons, err := excelx.Parse[Person](file)
```### Example
```go
package mainimport (
"fmt"
"net/http""github.com/prongbang/excelx"
)// Define a sample struct
type Person struct {
Name string `header:"Name" no:"3"`
Age int `header:"Age" no:"1"`
City string `header:"City" no:"2"`
Other string
}func generateExcelHandler(w http.ResponseWriter, r *http.Request) {
// Sample data
persons := []Person{
{"John Doe", 25, "New York", "555"},
{"Jane Doe", 30, "San Francisco", "555"},
{"Bob Smith", 22, "Chicago", "555"},
}// Create a new Excel file
file, _ := excelx.Convert[Person](persons)// Save the Excel file to the response writer
err := excelx.ResponseWriter(file, w, "output.xlsx")
if err != nil {
fmt.Println("Error writing Excel file to response:", err)
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
}
}func main() {
http.HandleFunc("/excelx", generateExcelHandler)// Start the HTTP server
fmt.Println("Server listening on :8080...")
http.ListenAndServe(":8080", nil)
}
```