分享
  1. 首页
  2. 文章

Golang 生成Excel文件(.xlsx)

LLL_小浪 · · 2184 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

1、导入xlsx直接生成Excel:

go get github.com/tealeg/xlsx

package main
import "github.com/tealeg/xlsx"
func main() {
 file := xlsx.NewFile()
 sheet,err := file.AddSheet("sheet1")
 if err != nil {
 panic(err)
 }
 row := sheet.AddRow()
 row.SetHeightCM(1) //设置每行的高度
 cell := row.AddCell()
 cell.Value = "haha"
 cell = row.AddCell()
 cell.Value = "1234567"
 err = file.Save("file.xlsx")
 if err != nil {
 panic(err)
 }
}
  • 效果如下:


    image.png
2、简单封装:
package xlsxtool
import (
 "github.com/tealeg/xlsx"
 "errors"
)
type XlsxRow struct {
 Row *xlsx.Row
 Data []string
}
func NewRow(row *xlsx.Row,data []string) *XlsxRow {
 return &XlsxRow{
 Row:row,
 Data:data,
 }
}
func (row *XlsxRow) SetRowTitle() error {
 return generateRow(row.Row,row.Data)
}
func (row *XlsxRow) GenerateRow() error {
 return generateRow(row.Row,row.Data)
}
func generateRow(row *xlsx.Row,rowStr []string) error {
 if rowStr == nil {
 return errors.New("no data to generate xlsx!")
 }
 for _,v := range rowStr {
 cell := row.AddCell()
 cell.SetString(v)
 }
 return nil
}
  • 调用:
package peopleExcel
import (
 "test/mode"
 "test/xlsxtool"
 "fmt"
 "github.com/tealeg/xlsx"
 "time"
)
func GeneratePeopleExcel(peo []mode.Person) (error, bool) {
 t1 := time.Now()
 defer func() {
 fmt.Println(time.Since(t1))
 }()
 t := make([]string, 0)
 t = append(t, "姓名")
 t = append(t, "性别")
 t = append(t, "年龄")
 t = append(t, "电话")
 t = append(t, "婚配")
 t = append(t, "现居地")
 file := xlsx.NewFile()
 sheet, err := file.AddSheet("sheet")
 if err != nil {
 return err, false
 }
 titleRow := sheet.AddRow()
 xlsRow := xlsxtool.NewRow(titleRow, t)
 err = xlsRow.SetRowTitle()
 if err != nil {
 return err, false
 }
 for _, v := range peo {
 currentRow := sheet.AddRow()
 tmp := make([]string, 0)
 tmp = append(tmp, v.Name)
 tmp = append(tmp, v.Gender)
 tmp = append(tmp, v.Age)
 tmp = append(tmp, v.Tel)
 tmp = append(tmp, v.Marry)
 tmp = append(tmp, v.Address)
 xlsRow := xlsxtool.NewRow(currentRow, tmp)
 err := xlsRow.GenerateRow()
 if err != nil {
 return err, false
 }
 }
 err = file.Save("./Excel/人员信息.xlsx")
 if err != nil {
 return err, false
 }
 return nil, true
}
  • 效果如下:


    image.png
  • 写完封装后,我仔细想了想,其实不用封装,可以直接遍历,封装的意义何在?(此处应该有个傻笑的表情 ^ - ^)。


    image.png

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:LLL_小浪

查看原文:Golang 生成Excel文件(.xlsx)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
2184 次点击
1 回复 | 直到 2020年10月12日 13:42:00
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏