分享
Go语言导出excel文件(.xlsx)
dengpei187 · · 23873 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
网上有许多关于导出excel的资料,其中最多的就是创建一个新的.xlsx文件(.xls库不提供写入的功能)。但是这种情况下导出的excel往往比较难看,另一种情况就是打开一个模板,往里面填充东西,往往首行固定。
第一种方法(直接创建)
package main
import (
"github.com/tealeg/xlsx"
)
func main() {
file := xlsx.NewFile()
sheet := file.AddSheet("Sheet1")
row := sheet.AddRow()
row.SetHeightCM(1) //设置每行的高度
cell := row.AddCell()
cell.Value = "haha"
cell = row.AddCell()
cell.Value = "xixi"
err := file.Save("file.xlsx")
if err != nil {
panic(err)
}
}
这样运行出来之后就直接生成一个file.xlsx文件。
第二种方法(打开文件往里面写入数据)
package main
import (
"github.com/tealeg/xlsx"
)
func main() {
file, err := xlsx.OpenFile("format.xlsx")
if err != nil {
panic(err)
}
first := file.Sheets[0]
row := first.AddRow()
row.SetHeightCM(1)
cell := row.AddCell()
cell.Value = "1"
cell = row.AddCell()
cell.Value = "张三"
cell = row.AddCell()
cell.Value = "男"
cell = row.AddCell()
cell.Value = "18"
err = file.Save("file.xlsx")
if err != nil {
panic(err)
}
}
打开的模板文件格式为:
这里写图片描述
最后写入数据的文件为:
这里写图片描述
小结
以上两种方法其实总体上没什么区别,都差不多,只是用起来有些不一样,补充一点,第二种方法打开的文件必须是.xlsx文件,否则是没有办法打开的。第二种方法只要直接添加行,然后写入东西即可。依据需要选择方法吧~
补充一下:从网上把路径的文件下载
this.Ctx.Output.Header("Accept-Ranges", "bytes")
this.Ctx.Output.Header("Content-Disposition", "attachment; filename="+fmt.Sprintf("%s", "file.xls"))//文件名
this.Ctx.Output.Header("Cache-Control", "must-revalidate, post-check=0, pre-check=0")
this.Ctx.Output.Header("Pragma", "no-cache")
this.Ctx.Output.Header("Expires", "0")
//最主要的一句
http.ServeFile(this.Ctx.ResponseWriter, this.Ctx.Request, path)有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信23873 次点击
上一篇:golang hijack
下一篇:golang-数据库详解
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
网上有许多关于导出excel的资料,其中最多的就是创建一个新的.xlsx文件(.xls库不提供写入的功能)。但是这种情况下导出的excel往往比较难看,另一种情况就是打开一个模板,往里面填充东西,往往首行固定。
第一种方法(直接创建)
package main
import (
"github.com/tealeg/xlsx"
)
func main() {
file := xlsx.NewFile()
sheet := file.AddSheet("Sheet1")
row := sheet.AddRow()
row.SetHeightCM(1) //设置每行的高度
cell := row.AddCell()
cell.Value = "haha"
cell = row.AddCell()
cell.Value = "xixi"
err := file.Save("file.xlsx")
if err != nil {
panic(err)
}
}
这样运行出来之后就直接生成一个file.xlsx文件。
第二种方法(打开文件往里面写入数据)
package main
import (
"github.com/tealeg/xlsx"
)
func main() {
file, err := xlsx.OpenFile("format.xlsx")
if err != nil {
panic(err)
}
first := file.Sheets[0]
row := first.AddRow()
row.SetHeightCM(1)
cell := row.AddCell()
cell.Value = "1"
cell = row.AddCell()
cell.Value = "张三"
cell = row.AddCell()
cell.Value = "男"
cell = row.AddCell()
cell.Value = "18"
err = file.Save("file.xlsx")
if err != nil {
panic(err)
}
}
打开的模板文件格式为:
这里写图片描述
最后写入数据的文件为:
这里写图片描述
小结
以上两种方法其实总体上没什么区别,都差不多,只是用起来有些不一样,补充一点,第二种方法打开的文件必须是.xlsx文件,否则是没有办法打开的。第二种方法只要直接添加行,然后写入东西即可。依据需要选择方法吧~
补充一下:从网上把路径的文件下载
this.Ctx.Output.Header("Accept-Ranges", "bytes")
this.Ctx.Output.Header("Content-Disposition", "attachment; filename="+fmt.Sprintf("%s", "file.xls"))//文件名
this.Ctx.Output.Header("Cache-Control", "must-revalidate, post-check=0, pre-check=0")
this.Ctx.Output.Header("Pragma", "no-cache")
this.Ctx.Output.Header("Expires", "0")
//最主要的一句
http.ServeFile(this.Ctx.ResponseWriter, this.Ctx.Request, path)