exl

package module
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Dec 9, 2022 License: Apache-2.0 Imports: 10 Imported by: 2

README

exl

Excel binding to struct written in Go.(Only supports Go1.18+)

CircleCI GitHub go.mod Go version codecov Go Report Card GoDoc Mentioned in Awesome Go

usage

Read Excel
package main

import (
	"fmt"
	"github.com/go-the-way/exl"
)

type ReadExcelModel struct {
	ID   int    `excel:"ID"`
	Name string `excel:"Name"`
}

func (*ReadExcelModel) Read(*exl.ReadMetadata) {}

func main() {
	if models, err := exl.ReadFile[*ReadExcelModel]("/to/path.xlsx"); err != nil {
		fmt.Println("read excel err:" + err.Error())
	} else {
		fmt.Printf("read excel num: %d\n", len(models))
	}
}
Write Excel
package main

import (
	"fmt"
	"github.com/go-the-way/exl"
)

type WriteExcelModel struct {
	ID   int    `excel:"ID"`
	Name string `excel:"Name"`
}

func (m *WriteExcelModel) Write(*exl.WriteMetadata) {}

func main() {
	if err := exl.Write("/to/path.xlsx", []*WriteExcelModel{{100, "apple"}, {200, "pear"}}); err != nil {
		fmt.Println("write excel err:" + err.Error())
	} else {
		fmt.Println("write excel done")
	}
}

Documentation

Overview

Package exl

Excel binding to struct written in Go.(Only supports Go1.18+)

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrSheetIndexOutOfRange        = errors.New("exl: sheet index out of range")
	ErrHeaderRowIndexOutOfRange    = errors.New("exl: header row index out of range")
	ErrDataStartRowIndexOutOfRange = errors.New("exl: data start row index out of range")
)

Functions

func Read

func Read[T ReadBind](reader io.Reader, filterFunc ...func(t T) (add bool)) ([]T, error)

Read io.Reader each row bind to `T`

func ReadBinary

func ReadBinary[T ReadBind](bytes []byte, filterFunc ...func(t T) (add bool)) ([]T, error)

ReadBinary each row bind to `T`

func ReadExcel

func ReadExcel(file string, sheetIndex int, walk func(index int, rows *xlsx.Row)) error

ReadExcel walk func from excel

func ReadFile

func ReadFile[T ReadBind](file string, filterFunc ...func(t T) (add bool)) ([]T, error)

ReadFile each row bind to `T`

func Write

func Write[T WriteBind](file string, ts []T) error

Write defines write []T to excel file

params: file,excel file full path

params: typed parameter T, must be implements exl.Bind

func WriteExcel

func WriteExcel(file string, data [][]string) error

WriteExcel defines write [][]string to excel

params: file, excel file pull path

params: data, write data to excel

Types

type ReadBind

type ReadBind interface{ ConfigureRM(rm *ReadMetadata) }

ReadBind defines read bind metadata

type ReadMetadata

type ReadMetadata struct {
	TagName           string // TagName: tag name
	SheetIndex        int    // SheetIndex: read sheet index
	HeaderRowIndex    int    // HeaderRowIndex: sheet header row index
	DataStartRowIndex int    // DataStartRowIndex: sheet data start row index
	TrimSpace         bool   // TrimSpace: trim space left and right only on `string` type
}

ReadMetadata defines read metadata

type WriteBind

type WriteBind interface{ ConfigureWM(wm *WriteMetadata) }

WriteBind defines write bind metadata

type WriteMetadata

type WriteMetadata struct {
	SheetName string // SheetName: default sheet name
	TagName   string // TagName: tag name
}

WriteMetadata defines write metadata

type Writer added in v1.2.0

type Writer struct {
	// contains filtered or unexported fields
}

Writer define a writer for exl

func NewWriter added in v1.2.0

func NewWriter(options ...xlsx.FileOption) *Writer

NewWriter returns new exl writer

func (*Writer) SaveTo added in v1.2.0

func (w *Writer) SaveTo(path string) (err error)

SaveTo the buffered binary into dist file

func (*Writer) Write added in v1.2.0

func (w *Writer) Write(sheet string, data any) error

Write or append the param data into sheet

func (*Writer) WriteTo added in v1.2.0

func (w *Writer) WriteTo(dw io.Writer) (n int, err error)

WriteTo the buffered binary into new writer

Jump to

Keyboard shortcuts

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