详细代码
func (TalentPool) ImportExcel(ctx *fiber.Ctx) error {
// 通过document读取文件, 文件上传头必须是multipart/form-data格式
file, err := ctx.FormFile("file")
if err != nil {
return baseReturn(ctx, -1, "上传文件出错")
}
// 打开临时文件
src, err := file.Open()
if err != nil {
return err
}
xlsx, err := excelize.OpenReader(src)
if err != nil {
return baseReturn(ctx, -1, "读取excel文件失败")
}
defer src.Close()
//解析excel的数据
list, lxRrr := readExcel(xlsx)
if lxRrr != nil {
//global.Logger.Error("read excel error:[%s]", lxRrr.Error())
return baseReturn(ctx, 0, "解析excel文件失败")
}
talentPool := models.TalentPool{}
//批量插入
ok, err := talentPool.SaveBatch(list)
if err != nil {
return baseReturn(ctx, 0, err.Error())
}
if !ok {
return baseReturn(ctx, 0, "插入数据失败")
}
return ctx.Status(fiber.StatusOK).JSON(kit.OkAndData(len(list)))
}