go Excel文件操作

https://blog.csdn.net/qq_36269019/article/details/107185349
https://www.jb51.net/article/114422.htm

csv格式的读取

在这里插入代码片

Excel

const (
	MAX_SIZE = 1024 * 1024 * 2
)
func AddConfigByExcel(ctx *gin.Context) {
	userId := ctx.Request.Header.Get(constant.X_USER_ID)
	companyId := ctx.Request.Header.Get(constant.X_COMPANY_ID)
	account := ctx.Request.Header.Get(constant.SESSION_ACCOUNT)
	//权限的判断
	if !GetAuth(account, userId, companyId) {
		logger.Error(account, ":GroupConfigChange没有权限")
		util.Response(ctx, 500, "没有权限", nil)
		return
	}
	//读取第一fileName的文件
	fileHeader, err := ctx.FormFile("file")
	if err != nil {
		logger.Error("文件格式错误"+err.Error())
		util.Response(ctx, 500, "文件格式错误"+err.Error(), nil)
		return
	}
	if fileHeader.Size > MAX_SIZE {
		logger.Error("文件大小超过2M")
		util.Response(ctx, 500, "文件大小超过2M", nil)
		return
	}
	file, err := fileHeader.Open()
	if err != nil {
		logger.Error("文件格式错误"+err.Error())
		util.Response(ctx, 500, "文件格式错误"+err.Error(), nil)
		return
	}
	defer file.Close()

	xlsx, err := excelize.OpenReader(bufio.NewReader(file))
	if err!=nil {
		logger.Error("excelize.OpenReader false:",err)
		util.Response(ctx, 500, "文件格式错误"+err.Error(), nil)
		return
	}
	cell := xlsx.GetCellValue("Sheet1", "B1")
	fmt.Println(cell)
	// Get sheet index.
	index := xlsx.GetSheetIndex("Sheet1")
	// Get all the rows in a sheet.
	rows := xlsx.GetRows("sheet" + strconv.Itoa(index))
	//rows := xlsx.GetRows("Sheet1")
	for indexRow, row := range rows {
		fmt.Println(indexRow)
		for indexFeild, colCell := range row {
			fmt.Println(indexFeild,":",colCell)
		}
	}

	util.Response(ctx, 200, "ok", nil)
	return
}

1,gin框架读取文件流
https://blog.csdn.net/aaaadong/article/details/90177038

	//读取第一fileName的文件
	file, err := ctx.FormFile("fileName")
	//根据文件地址写入流(下载操作)
	ctx.File("filePath")
	//根据文件地址写入流,客户端以给定名下载文件
	ctx.FileAttachment("filePath","fileName")
	//根据文件地址写入流,客户端以文件格式为http.FileSytem下载
	ctx.FileFromFS("filePath","fileSystem")
	//SaveUploadedFile uploads the form file to specific dst.
	ctx.SaveUploadedFile("fileHeader","dst")

2,golang读取excel

3,golang导出Excel格式文件

https://blog.csdn.net/qq_22999737/article/details/103387835

//创建文件对象
file := excelize.NewFile()
index := file.NewSheet("sheet的名称")
//删除Sheet
file.DeleteSheet("Sheet的名称")

https://studygolang.com/articles/9623

xlsx := excelize.CreateFile()
    // Create a new sheet.
    xlsx.NewSheet(2, "Sheet2")
    // Set value of a cell.
    xlsx.SetCellValue("Sheet2", "A2", "Hello world.")
    xlsx.SetCellValue("Sheet1", "B2", 100)
    // Set active sheet of the workbook.
    xlsx.SetActiveSheet(2)
    // Save xlsx file by the given path.
    err := xlsx.WriteTo("/tmp/Workbook.xlsx")
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

实战

	//创建Excel文件
	xlsx := excelize.NewFile()
	sheetIndex := xlsx.NewSheet("Sheet1")
	logger.Info("返回的是下标,下标从1开始:sheetIndex=",sheetIndex)
	xlsx.SetCellValue("Sheet1", "B2", "测试")

	//sheetIndex := xlsx.GetSheetIndex("Sheet1")
	//logger.Info("sheetIndex:",sheetIndex)
	xlsx.SetActiveSheet(sheetIndex)
	//修改为流程名,月份是因为的月份,所以要转成int
	t := time.Now()
	//tstring := strconv.Itoa(t.Year()) + strconv.Itoa(int(t.Month()))+ strconv.Itoa(t.Day())
	tstring := time.Now().Format(constant.FORMAT_DAY)
	excelName := in.AppId + "_Process_" + tstring + ".xlsx"
	responseWriter := ctx.Writer
	responseWriter.Header().Add("Content-Type", "application/octet-stream")
	responseWriter.Header().Add("Content-Disposition", "attachment; filename=\""+excelName+"\"")
	to, err := xlsx.WriteTo(responseWriter)
	logger.Info(account,":GroupProcessListDownload:写入的字节数:",to)
	//_, err = io.Copy(responseWriter, xl)
	if err != nil {
		logger.Error(user.Account, ":转换流异常:", err.Error())
		ctx.Status(http.StatusInternalServerError)
		responseWriter.Flush()
	}
	ctx.Status(http.StatusOK)
	responseWriter.Flush()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值