excelx

package module
v1.2.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 10, 2025 License: MIT Imports: 12 Imported by: 2

README

excelx

Go Report Card

Convert array struct to XLSX format and Parse XLSX format to array struct with Golang

Install

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 and default if data is null

type Person struct {
	Name  *string `header:"Name" no:"3" default:"N/A"`
	Age   int     `header:"Age" no:"1"`
	City  *string `header:"City" no:"2" default:"BKK"`
	Other string
}

Using for Convert single sheet

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)

Using for Convert multiple sheets

m1 := []MyStruct1{
    {"John Doe", 25, "New York", "555"},
    {"Jane Doe", 30, "San Francisco", "555"},
    {"Bob Smith", 22, "Chicago", "555"},
}
m2 := []MyStruct1{
    {"John Doe", 25, "New York", "555"},
    {"Jane Doe", 30, "San Francisco", "555"},
    {"Bob Smith", 22, "Chicago", "555"},
}
file, err := excelx.Converts(func(file excelx.Xlsx) []excelx.Sheet {
    return []excelx.Sheet{
        {
            Name: "Struct1",
            Exec: func(name string) { excelx.NewSheet(file, name, m1) },
        },
        {
            Name: "Struct1",
            Exec: func(name string) { excelx.NewSheet(file, name, m2) },
        },
    }
})

Save the Excel file to the response writer

  • http
err := excelx.ResponseWriter(file, w, "output.xlsx")
  • fiber
err := excelx.SendStream(ctx, file, "output.xlsx")

Using for Parse

file, _, err := r.FormFile("xlsxfile")
persons, err := excelx.Parse[Person](file)
Example
package main

import (
	"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)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ClearUnicode added in v1.1.3

func ClearUnicode(text string) string

ClearUnicode clear unicode from text

func GetSheetList added in v1.1.1

func GetSheetList(r io.Reader, opts ...excelize.Options) []string

func IsEmpty added in v1.1.5

func IsEmpty(slice []string) bool

func NewSheet added in v1.2.0

func NewSheet[T any](file Xlsx, sheet string, data []T)

func NumberToColName

func NumberToColName(n int) string

NumberToColName converts a column number to an Excel column letter

func ParseByMultipart added in v1.1.1

func ParseByMultipart[T any](file multipart.File, sheetName ...string) ([]T, error)

func Parser added in v1.1.3

func Parser[T any](r io.Reader, opts ...Options) ([]T, error)

Parser excel format to array struct

func ParserFunc added in v1.1.3

func ParserFunc(r io.Reader, onRecord func([]string) error, opts ...Options) error

ParserFunc excel format to array struct

func ParserString added in v1.1.3

func ParserString[T any](r io.Reader, opts ...Options) ([]T, error)

ParserString excel format to array struct

func RemoveDoubleQuote added in v1.1.3

func RemoveDoubleQuote(text string) string

RemoveDoubleQuote remove double quote (") and clear unicode from text

func RequestFile

func RequestFile(r *http.Request, name string) (multipart.File, *multipart.FileHeader, error)

func ResponseWriter

func ResponseWriter(file Xlsx, w http.ResponseWriter, filename string) error

func SendStream added in v1.2.1

func SendStream[T Response](c T, file Xlsx, filename string) error

Types

type Options added in v1.1.1

type Options struct {
	Options   *excelize.Options
	SheetName string
}

type Response added in v1.2.1

type Response interface {
	Set(key, val string)
	SendStream(stream io.Reader, size ...int) error
}

type Sheet added in v1.2.0

type Sheet struct {
	Name string
	Exec func(name string)
}

type SheetInterface added in v1.2.4

type SheetInterface interface {
	GetName() string
	GetData() []any
}

type Xlsx added in v1.2.5

type Xlsx struct {
	File *excelize.File
}

func Convert

func Convert[T any](data []T, sheetName ...string) (*Xlsx, error)

Convert array struct to Excel format

func Converts added in v1.2.0

func Converts(sheets func(file Xlsx) []Sheet) (Xlsx, error)

Converts array struct to Excel format

func OpenReader added in v1.1.1

func OpenReader(r io.Reader, opts ...excelize.Options) (Xlsx, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL