最新消息:欢迎加入小松的QQ群一起讨论一起学习,搜索页面修改成lua+ElasticSearch,使用php这个页面速度相对慢一点,优化之后速度杠杠的,如有问题请加群联系我

go 上传EXCEL并解析

golang 22浏览 0评论

用php来做文件的上传并解析EXCEL,在实际的开发中是很常见的,比如订单的批量导入,用php也能处理,但在实际的开发中你进程遇到,导入文件只导入版,解析EXCEL只处理了一半,如果不检查数据可能发现不了这个问题,如果用go来做这个功能就大大提高了处理能力
下面是我写的一个测试

使用的是github.com/xuri/excelize来解析EXCEL

安装方式:

go get github.com/xuri/excelize
package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
	"path"
	"time"

	"github.com/xuri/excelize"
)

const (
	upload_path string = "./upload/"
)

func main() {
	http.HandleFunc("/", indexHandle)
	http.HandleFunc("/uploads", uploadHandle)
	err := http.ListenAndServe(":8780", nil)
	if err != nil {
		fmt.Println("服务器启动失败")
		return
	}
	fmt.Println("服务器启动成功")
}
func indexHandle(w http.ResponseWriter, r *http.Request) {
	io.WriteString(w, "<html><head><title>xlsx文件导入</title></head><body><form action='/uploads' method=\"post\" enctype=\"multipart/form-data\"><label>上传EXCEL</label><input type=\"file\" name='file'  /><br/><label><input type=\"submit\" value=\"上传EXCEL\"/></label></form></body></html>")
}
func uploadHandle(w http.ResponseWriter, r *http.Request) {
	//获取文件内容 要这样获取
	file, head, err := r.FormFile("file")
	if err != nil {
		fmt.Println(err)
		return
	}

	defer file.Close()
	//当期时间格式化
	filename := time.Now().Format("20060102150405")
	//获取文件的后缀
	fileSuffix := path.Ext(head.Filename)

	filePath := upload_path + filename + fileSuffix
	//创建文件
	fW, err := os.Create(filePath)
	if err != nil {
		fmt.Println("文件创建失败")
		return
	}
	defer fW.Close()
	_, err = io.Copy(fW, file)
	if err != nil {
		fmt.Println("文件保存失败")
		return
	}
	if fileSuffix == ".xlsx" {
		fileXlsx(filePath)
	}
	//跳转到首页
	http.Redirect(w, r, "/", http.StatusFound)

}
func fileXlsx(filePath string) {
	xlsx, err := excelize.OpenFile(filePath)
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}
	rows := xlsx.GetRows("sheet1")
	for _, row := range rows {
		for _, colCell := range row {
			fmt.Print(colCell, "\t")
		}

	}

}

本地测试2M的文件大小,xlsx格式3万多行,的访问日志,执行时间大约在23秒,这个在实际中已经够用了,数据也够快

go 上传EXCEL并解析测试结果

QQ交流群:136351212(满) 455721967

如无特别说明,本站文章皆为原创,若要转载,务必请注明以下原文信息:
转载保留版权:小松博客» go 上传EXCEL并解析
本文链接地址:https://www.phpsong.com/3308.html

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
木有头像就木有JJ!点这里按步骤申请Gravatar头像吧!