You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.3 KiB
55 lines
1.3 KiB
package personnelapi
|
|
|
|
import (
|
|
"encoding/csv"
|
|
"fmt"
|
|
"hr_server/middleware/snowflake"
|
|
"hr_server/overall/overallhandle"
|
|
"os"
|
|
)
|
|
|
|
/**
|
|
@ 作者: 秦东
|
|
@ 时间: 2022-11-26 10:01:34
|
|
@ 功能: 创建csv文件
|
|
@ 参数
|
|
#
|
|
@ 返回值
|
|
#
|
|
@ 方法原型
|
|
#
|
|
*/
|
|
|
|
func WriteCsvFile(fileName string, titleAry []string, bodyAry []ExportPeopleCont) (string, error) {
|
|
if len(titleAry) < 1 && len(bodyAry) < 1 {
|
|
return "", nil
|
|
}
|
|
var manKeyNum int64 = 0
|
|
node, nodeErr := snowflake.NewWorker(1)
|
|
if nodeErr == nil {
|
|
manKeyNum = node.GetId()
|
|
} else {
|
|
manKeyNum = overallhandle.TableNumber()
|
|
}
|
|
//创建csv文件
|
|
filename := fmt.Sprintf("%v-%v.csv", fileName, manKeyNum)
|
|
xlsFile, fErr := os.OpenFile("uploads/"+filename, os.O_RDWR|os.O_CREATE, 0766)
|
|
if fErr != nil {
|
|
fmt.Println("Export:created excel file failed ==", fErr)
|
|
return "", fErr
|
|
}
|
|
defer xlsFile.Close()
|
|
//开始写入内容
|
|
xlsFile.WriteString("\xEF\xBB\xBF") //写入UTF-8 BOM,此处如果不写入就会导致写入的汉字乱码
|
|
wStr := csv.NewWriter(xlsFile)
|
|
wStr.Write(titleAry) //写入标题栏
|
|
|
|
//写入主体
|
|
for _, v := range bodyAry {
|
|
wStr.Write([]string{fmt.Sprintf("%v\t", v.Number), v.Name, fmt.Sprintf("%v\t", v.Tel), fmt.Sprintf("%v\t", v.Idcardenddate), v.Org, v.Post, v.Team, v.EmpTypeNAme})
|
|
}
|
|
// wStr.Write(bodyAry)
|
|
wStr.Flush()
|
|
|
|
return filename, nil
|
|
}
|
|
|