您的位置 首页 golang

Go Web 框架 Gin 实践14—实现导出、导入 Excel

项目地址:

如果对你有所帮助,欢迎点个 Star

前言

在本节,我们将实现对标签信息的导出、导入功能,这是很标配功能了,希望你掌握基础的使用方式

另外在本文我们使用了 2 个 Excel 的包,excelize 最初的 XML 格式文件的一些结构,是通过 tealeg/xlsx 格式文件结构演化而来的,因此特意在此都展示了,你可以根据自己的场景和喜爱去使用

配置

首先要指定导出的 Excel 文件的存储路径,在 app. ini 中增加配置:

[app]
...
ExportSavePath = export/
 

修改 setting.go 的 App struct:

在这里需增加 ExportSavePath 配置项,另外将先前 ImagePrefixUrl 改为 PrefixUrl 用于支撑两者的 HOST 获取

(注意修改 image.go 的 GetImageFullUrl 方法)

pkg

新建 pkg/export/excel.go 文件,如下:

这里编写了一些常用的方法,以后取值方式如果有变动,直接改内部代码即可,对外不可见

尝试一下标准库

在 Go 提供的标准库 encoding /csv 中,天然的支持 csv 文件的读取和处理,在本段代码中,做了如下工作:

1、os.Create:

创建了一个 test.csv 文件

2、f.WriteString(“xEFxBBxBF”):

\xEF\xBB\xBF 是 UTF-8 BOM 的 16 进制格式,在这里的用处是标识文件的编码格式,通常会出现在文件的开头,因此第一步就要将其写入。如果不标识 UTF-8 的编码格式的话,写入的汉字会显示为乱码

3、csv.NewWriter:

4、w.WriteAll:

WriteAll 实际是对 Write 的封装,需要注意在最后调用了 w.w.Flush(),这充分了说明了 WriteAll 的使用场景,你可以想想作者的设计用意

导出

Service 方法

打开 service/tag.go,增加 Export 方法,如下:

router s 入口

打开 routers/ api /v1/tag.go,增加如下方法:

路由

在 routers/router.go 文件中增加路由方法,如下

验证接口

访问 ,结果如下:

最终通过接口返回了导出文件的地址和保存地址

StaticFS

那你想想,现在直接访问地址肯定是无法下载文件的,那么该如何做呢?

打开 router.go 文件,增加代码如下:

r.StaticFS("/export", http.Dir(export.GetExcelFullPath()))
 

若你不理解,强烈建议温习下前面的章节,举一反三

验证下载

再次访问上面的 export_url ,如:,是不是成功了呢?

导入

Service 方法

打开 service/tag.go,增加 Import 方法,如下:

routers 入口

打开 routers/api/v1/tag.go,增加如下方法:

路由

在 routers/router.go 文件中增加路由方法,如下

验证

在这里我们将先前导出的 Excel 文件作为入参,访问 ,检查返回和数据是否正确入库

总结

在本文中,简单介绍了 Excel 的导入、导出的使用方式,使用了以下 2 个包:

你可以细细阅读一下它的实现和使用方式,对你的把控更有帮助

课外

  • tag:导出使用 excelize 的方式去实现(可能你会发现更简单哦)
  • tag:导入去重功能实现
  • artice :导入、导出功能实现

也不失为你很好的练手机会,如果有兴趣,可以试试

参考

本系列示例代码

  • go-gin-example

本系列作者:煎鱼,原创授权发布

文章来源:智云一二三科技

文章标题:Go Web 框架 Gin 实践14—实现导出、导入 Excel

文章地址:https://www.zhihuclub.com/101296.shtml

关于作者: 智云科技

热门文章

评论已关闭

1条评论

  1. What i ԁo not realize iѕ in reality how you are now not really a lоt more ѕmartly-apрreciated than yоu may be now.

    You arе very intelligent. You understand thus significantly relating
    to this matter, made me individually believe it frοm numerous various angles.
    Its like women and men are not involved unless it is sߋmething to accomplish
    with Woman gaga! Your own stuffs gгeat. All the time take care of it up!

网站地图