excel

package module
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Jan 30, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

README

lib-excel

1. How to read excel from file

reader, err := NewFileReader("example.xlsx")
if err != nil {
    log.Fatal(err)
}

sheet, err := reader.ReadSheet("Sheet1")
if err != nil {
    return nil, errors.Wrap(err, "读取表格失败")
}

for i, row := range sheet.Rows {
    fmt.Println(row.Get("column1"))
    fmt.Println(row.GetInt64("column2"))
}

2. How to read excel from network

reader, err := NewHttpReader("http://example.com/download/example.xlsx")
if err != nil {
    log.Fatal(err)
}

sheet, err := reader.ReadSheet("Sheet1")
if err != nil {
    return nil, errors.Wrap(err, "读取表格失败")
}

for i, row := range sheet.Rows {
    fmt.Println(row.Get("column1"))
    fmt.Println(row.GetInt64("column2"))
}

3. How to write excel file

// define row
type row struct {
    Id int64 `col_name:"序号"`
    Name string `col_name:"名字"`
}

rows := make([]any, 5)
for i:=0; i<5; i++ {
    rows[i] = &row{
		Id: i+1,
        Name: "name" + i,
    }
}

writer, err := NewFileWriter()
if err != nil {
    log.Fatal(err)
}

err = writer.CreateDefaultSheet(rows)
if err != nil {
    log.Fatal(err)
}

err = writer.Save("example.xlsx")
if err != nil {
    log.Fatal(err)
}

4. How to write excel file

// define row
type Row struct {
    Id int64 `col_name:"序号"`
    Name string `col_name:"名字"`
}

type RowWithAxis struct {
    Id int64 `col_name:"序号",col_axis:"B"`
    Name string `col_name:"名字",col_axis:"A"`
}

rows1 := make([]any, 5)
for i:=0; i<5; i++ {
    rows1[i] = &Row{
		Id: i+1,
        Name: "name" + i,
    }
}

rows2 := make([]any, 5)
for i:=0; i<5; i++ {
    rows2[i] = &RowWithAxis{
        Id: i+1,
        Name: "name" + i,
    }
}

writer, err := NewFileWriter()
if err != nil {
    log.Fatal(err)
}

err = writer.CreateDefaultSheet(rows1)
if err != nil {
    log.Fatal(err)
}

err = writer.Save("example1.xlsx")
if err != nil {
    log.Fatal(err)
}

err = writer.CreateDefaultSheet(rows2)
if err != nil {
    log.Fatal(err)
}

err = writer.Save("example2.xlsx")
if err != nil {
    log.Fatal(err)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type FileWriter

type FileWriter interface {
	Writer
	Save(filename string) error // save excel file
}

func NewFileWriter

func NewFileWriter(options ...WriterOption) (FileWriter, error)

type Reader

type Reader interface {
	ReadSheet(sheetName string) (*Sheet, error)
	ReadAllSheets() ([]*Sheet, error)
}

func NewFileReader

func NewFileReader(filepath string, options ...ReaderOption) (Reader, error)

func NewHttpReader

func NewHttpReader(url string, options ...ReaderOption) (Reader, error)

type ReaderOption

type ReaderOption func(*readerImpl)

func WithHeaderRowIndex

func WithHeaderRowIndex(index int) ReaderOption

type Sheet

type Sheet struct {
	Name          string
	HeaderIndexes map[string]int // headerName => index
	Headers       []string       // headers
	Rows          []*SheetRow
}

type SheetRow

type SheetRow struct {
	Sheet   *Sheet
	Columns []string
}

func (*SheetRow) Get

func (r *SheetRow) Get(colName string) string

func (*SheetRow) GetFloat64

func (r *SheetRow) GetFloat64(colName string) float64

func (*SheetRow) GetInt

func (r *SheetRow) GetInt(colName string) int

func (*SheetRow) GetInt32

func (r *SheetRow) GetInt32(colName string) int32

func (*SheetRow) GetInt32Slice

func (r *SheetRow) GetInt32Slice(colName string) []int32

GetInt32Slice get comma separated int32 slice

func (*SheetRow) GetInt64

func (r *SheetRow) GetInt64(colName string) int64

func (*SheetRow) GetInt64Slice

func (r *SheetRow) GetInt64Slice(colName string) []int64

GetInt64Slice get comma separated int64 slice

func (*SheetRow) GetIntSlice

func (r *SheetRow) GetIntSlice(colName string) []int

GetIntSlice get comma separated int slice

func (*SheetRow) GetStringSlice

func (r *SheetRow) GetStringSlice(colName string) []string

GetStringSlice get comma separated string slice

type Writer

type Writer interface {
	CreateDefaultSheet(rows []any) error            // create a default sheet
	CreateSheet(sheetName string, rows []any) error // create sheet with specified name
	GetContent() ([]byte, error)                    // get excel content
}

func NewWriter

func NewWriter(options ...WriterOption) (Writer, error)

type WriterOption

type WriterOption func(*excelWriterOption)

func WithCellStyles

func WithCellStyles(styles map[string]*excelize.Style) WriterOption

func WithColStyle

func WithColStyle(style *excelize.Style) WriterOption

func WithDefaultSheetName

func WithDefaultSheetName(sheetName string) WriterOption

Jump to

Keyboard shortcuts

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