使用的框架是gin
包為”github.com/gocarina/gocsv”
建立csv檔案並且匯出給前端
import (
"github.com/gocarina/gocsv"
)
//建立檔案流
f, err := os.Create("dictList.csv")
//關閉流
defer f.Close()
//寫入UTF-8 格式
f.WriteString("\xEF\xBB\xBF")
var newContent [][]string
//新增資料
newContent = append(newContent, []string{"1", "2", "3", "4", "5", "6"})
//儲存檔案流
err = gocsv.MarshalFile(newContent, f)
if err != nil {
response.FailWithMessage(err.Error(), c)
return
}
//傳輸檔案流(使用gin或者http的時候向前端傳送的流檔案)
c.File("dictList.csv")
//刪除檔案
_ = os.Remove("dictList.csv")
)
解析csv檔案並且匯出給前端
response.FailWithMessage為自己封裝的報錯資訊,根據自己實際情況做出改變
//獲取檔案頭
file, err := c.FormFile("file")
if err != nil {
response.FailWithMessage(err.Error(), c)
return
}
//獲取檔名
fileName := file.Filename
//獲取檔案字尾名
fileSuffix := path.Ext(fileName)
//字尾名判斷
if fileSuffix != ".csv" {
response.FailWithMessage("檔案字尾格式有誤", c)
return
}
//SaveUploadedFile(檔案頭,儲存路徑)
if err := c.SaveUploadedFile(file, fileName); err != nil {
response.FailWithMessage("儲存失敗", c)
os.Remove(fileName)
return
}
//開啟流
clientsFile, err := os.OpenFile(fileName, os.O_RDWR|os.O_CREATE, os.ModePerm)
if err != nil {
response.FailWithMessage(err.Error(), c)
os.Remove(fileName)
return
}
//關閉流
defer clientsFile.Close()
//解析csv檔案到結構體,clients為自己定義的結構體
if err := gocsv.UnmarshalFile(clientsFile, &clients); err != nil {
response.FailWithMessage("檔案內容格式有誤", c)
os.Remove(fileName)
return
}
for _, client := range clients {
.....
//遍歷clients,每個結構體引數用client來獲取,並按照需求進行處理
}
//刪除上傳檔案
os.Remove(fileName)
insert.Commit()
response.OkWithMessage("匯入成功", c)
本作品採用《CC 協議》,轉載必須註明作者和本文連結