Golang📌常用包📌excel.go
// https://github.com/qax-os/excelize
package excel
import (
"log"
"strconv"
"github.com/xuri/excelize/v2"
)
func Write() {
f := excelize.NewFile()
defer f.Close()
sh := "Sheet1" //默认的首个sheet,如果设为其它,则首个sheet为空的Sheet1
index, err := f.NewSheet(sh)
if err != nil {
log.Fatal(err)
}
f.SetActiveSheet(index)
f.SetColWidth(sh, "A", "A", 30) //单列设置宽度180px
f.SetColWidth(sh, "B", "C", 20) //两列设为相同宽度120px
f.SetRowHeight(sh, 1, 20) //首行高度设为20px
f.SetCellStr(sh, "A1", "aaa")
f.SetCellStr(sh, "B1", "bbb")
f.SetCellStr(sh, "C1", "ccc")
for i := 2; i < 12; i++ {
line := strconv.Itoa(i)
f.SetCellFloat(sh, "A"+line, 3.141592653, 5, 64) //保留5位小数
f.SetCellInt(sh, "B"+line, i)
f.SetCellBool(sh, "C"+line, i&1 == 0)
}
f.SetSheetName(sh, "工作表") //重命名sheet
if err = f.SaveAs("local.xlsx"); err != nil {
log.Fatal(err) //保存到本地
}
buf, err := f.WriteToBuffer()
if err != nil {
log.Fatal(err)
}
log.Println(buf.Len()) //buf上传到storage
}
func Read() {
f, err := excelize.OpenFile("local.xlsx") //也可以通过OpenReader从内存中读取
if err != nil {
log.Fatal(err)
}
defer f.Close()
sh := f.GetSheetList()[0]
a2, _ := f.GetCellValue(sh, "A2") //读取指定单元格
log.Println(a2)
rows, _ := f.GetRows(sh) //读取全部行列
for i, row := range rows {
log.Println(i, row)
}
}