一个简单生成 xlsx
的 demo
使用的是 github.com/tealeg/xlsx
依赖,支持多个 sheet
package main
import (
"fmt"
"log"
"sync"
"github.com/tealeg/xlsx"
)
func main() {
// 创建一个新的 Excel 文件
file := xlsx.NewFile()
var wg sync.WaitGroup
wg.Add(10)
go func() {
wg.Done()
addData(file, "houji1", "helloworld")
}()
go func() {
wg.Done()
addData(file, "houji2", "devopss1111")
}()
go func() {
wg.Done()
addData(file, "houji3", "gogogooggogo")
}()
go func() {
wg.Done()
addData(file, "houji4", "oxoxoxoxxoxox")
}()
go func() {
wg.Done()
addData(file, "houji5", "dingdingdingding")
}()
go func() {
wg.Done()
addData(file, "houji6", "tomjerrytom")
}()
go func() {
wg.Done()
addData(file, "houji7", "cs2goupupup")
}()
go func() {
wg.Done()
addData(file, "houji8", "golandideagooland")
}()
go func() {
wg.Done()
addData(file, "houji9", "wpsofficeoooaaa")
}()
go func() {
wg.Done()
addData(file, "houji10", "zhangfei!!!hahahah")
}()
wg.Wait()
// 保存文件到本地(覆盖已存在的同名文件)
err := file.Save("hello.xlsx")
if err != nil {
log.Fatalf("无法保存文件:%v", err)
}
fmt.Println("xlsx 文件已生成并保存成功!")
}
func addData(file *xlsx.File, sheetName string, message string) {
sheet, err := addSheet(file, sheetName)
if err != nil {
log.Fatal(err)
}
var columnCount = len(message)
// 设置列明, 测试写成 line1、line2、line3等等
firstRow := sheet.AddRow()
for i := 1; i <= columnCount; i++ {
cell := firstRow.AddCell()
cell.Value = fmt.Sprintf("line%d", i)
}
row := sheet.AddRow()
// 在行中逐个字符创建一个新的单元格,并设置其值为字符加一个空格
for _, char := range message {
cell := row.AddCell()
cell.Value = string(char)
}
}
// addSheet 在文件中创建一个新的工作表
func addSheet(xf *xlsx.File, sheetName string) (*xlsx.Sheet, error) {
sheet, err := xf.AddSheet(sheetName)
if err != nil {
return nil, fmt.Errorf("无法添加工作表:%v", err)
}
return sheet, nil
}