Go操作CSV相关功能
package main
import (
"bytes"
"encoding/csv"
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", hello)
http.ListenAndServe(":9090", nil)
}
func hello(w http.ResponseWriter, r *http.Request) {
buff := new(bytes.Buffer)
buff.WriteString("\xEF\xBB\xBF")
csvWriter := csv.NewWriter(buff)
csvWriter.Write([]string{
"编号", "订单号", "发起时间", "接单时间",
})
record1 := []string{"1", "20233445456", "2023-03-08 13:20:00", "2023-03-08 13:20:00"}
csvWriter.Write(record1)
record2 := []string{"2", "20233445456", "2023-03-08 13:20:00", "2023-03-08 13:20:00"}
csvWriter.Write(record2)
csvWriter.Flush()
w.Header().Set("Content-Type", "application/force-download")
w.Header().Set("Accept-Ranges", "bytes")
w.Header().Set("Content-Disposition", fmt.Sprintf(`attachment;filename=%s`, "demo.csv"))
w.Write(buff.Bytes())
}
func main() {
filename := "demo.csv"
header := []string{"名称", "数量", "金额"}
var body [][]string
body = append(body, []string{"1", "2", "3"})
writeCSV(filename, header, body)
}
func writeCSV(filename string, header []string, body [][]string) error {
f, err := os.Create(filepath.Join("./", filename))
if err != nil {
return err
}
defer f.Close()
_, err = f.WriteString("\xEF\xBB\xBF")
if err != nil {
return err
}
w := csv.NewWriter(f)
_ = w.Write(header)
_ = w.WriteAll(body)
w.Flush()
return nil
}