HR管理系统
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

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
}