EasyDSS如何定制Go语言生成CSV文件?


本文摘自网络,作者,侵删。

在TSINGSEE青犀视频云边端架构视频直播点播平台EasyDSS部分定制项目中,客户提出生成归档清单的要求,即生成 CSV 文件由客户进行统计操作。因此我们研发人员进行了生成 CSV 文件的功能编写。

微信截图_20201020103926.png

关于EasyDSS视频直播点播平台,TSINGSEE青犀视频也提供过其他很多的定制项目,如果有需要也联系我们了解,本文讲的CSV 文件为逗号分隔值文件格式,其中 CSV 为Comma-Separated Values 的缩写,即使用逗号分隔数据的数据,以下数据就是 CSV 文件的内容。

69.png

如果使用 Office 套件打开的话,将会按照一定的格式显示。

70.png

CSV 文件和微软的 excel 文件很像,但是实质并不相同, excel 文件内部是微软自定义的一种格式,并不是文本格式,而 csv 文件本质上是文本文件,可以直接采用记事本打开,在大量数据的存储上更建议使用excel文件。

Go语言中实现写入csv文件的代码如下:

 

// 创建 CSV 文件
func CreateCsvFile(filePath string, datas *[][]string) error {
   file, err := os.OpenFile(filePath, os.O_CREATE|os.O_RDWR, 0644)
   if err != nil {
      os.Remove(filePath)
      return err
   }
   defer file.Close()
 
   w := csv.NewWriter(file)
   err = w.WriteAll(*datas)
   if err != nil {
      os.Remove(filePath)
      return err
   }
   w.Flush()
 
   return nil
}

其中使用了 “encoding/csv” 这个官方库。
测试代码如下:

func TestCreateCsvFile(t *testing.T) {
   filePath := "D://test1.csv"
   datas := [][]string{
      {"1", "数据1", "楞伽经"},
      {"2", "数据2", "唯我独尊"},
      {"3", "数据3", "天上天下"},
   }
   fmt.Println(CreateCsvFile(filePath, &datas))
 
   filePath = "D://test2.csv"
   datas = [][]string{
      {"1", "one", "blue"},
      {"2", "two", "green"},
      {"3", "three", "rust"},
   }
   fmt.Println(CreateCsvFile(filePath, &datas))
}

正常生成了文件,并且数据内容正确。

71.png

72.png

 

注:

在网络上有人建议添加以下代码来处理中文乱码问题。

file.WriteString("\xEF\xBB\xBF")

该行代码的含义为提前在文件中写入UTF-8 BOM的信息,来代表此文件是 UTF-8 BOM 编码的格式。经过测试,不添加此代码,生成的文件已经是 UTF-8 文件了,因此删除此行代码。


本文来自:51CTO博客

感谢作者:wx6084d152d85c2

查看原文:EasyDSS如何定制Go语言生成CSV文件?

相关阅读 >>

手撸Golang 创建型设计模式 单例模式

[系列] Go - 统一定义 api 错误码

Go 里面 [...]string{"a", "b", "c"} 加三个点是什么骚写法?

我用Go-zero开发了第一个线上项目

使用 Go-randgen 测试 join 查询

Golang四舍五入保留两位小数

聊聊dapr的fswatcher

什么是量化交易|量化交易平台

Go语言 switch 语句

Godoc命令不存在的解决方法

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...