golang에서 csv 형식의 파일을 내보내는 방법
4859 단어 go
import(
"fmt"
"github.com/xormplus/xorm"
"golang.org/x/text/transform"
"golang.org/x/text/encoding/simplifiedchinese"
"io/ioutil"
"github.com/gin-gonic/gin"
"bytes"
"encoding/csv"
"strings"
_ "github.com/lib/pq"
"strconv"
)
...
type User struct{
Name string
Provice string
City string
Address string
TDate string
Phone string
Status int
}
func GetData(c *gin.Context) {
fileName := "test.csv"
//users, err := GetUserByDate("2018/4/3", "2018/4/3")
users = make([]User,0,10)
users = append(users,User{"ft", "jiangxi", "nanchang", "xx", time.Now(), "110", 1})
users = append(users,User{"ft2", "jiangxi", "nanchang", "xx", time.Now(), "111", 1})
users = append(users,User{"ft3", "jiangxi", "nanchang", "xx", time.Now(), "111", 1})
if err != nil {
fmt.Println(err)
return
}
fmt.Println(users)
usersStrArray :=structs2StringArr(users)
categoryHeader := []string{" "," "," "," "," "," "," "}
b := &bytes.Buffer{}
wr := csv.NewWriter(b)
wr.Write(categoryHeader) // shu
for i := 0; i < len(usersStrArray); i++ {
wr.Write(usersStrArray[i])
}
wr.Flush()
c.Writer.Header().Set("Content-Type", "text/csv")
c.Writer.Header().Set("Content-Disposition", fmt.Sprintf("attachment;filename=%s", fileName))
//tet, _ := UTF82GBK(b.Bytes())
tet:=b.String()
c.String(200, tet)
}
func structs2StringArr(users []User) [][]string{
var userArr =make([][]string,0)
var user = User{}
for i:=0;i<len(users);i++{
user = users[i]
userArr = append(userArr,[]string{user.Name,user.Province,user.City,user.Address,user.Tdate,user.Phone,strconv.Itoa(user.Status)})
}
return userArr
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Go Fiber 및 PlanetScale로 REST API 구축 - 4부다시 사용자 핸들러에 UpdateUser라는 새 함수를 추가합니다. 업데이트 사용자를 main.go에 등록 이제 응용 프로그램을 다시 실행하십시오. 이전에 생성한 사용자를 업데이트합니다. 응답 사용자가 존재하지 않을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.