beego excel的导出和读取操作
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容介绍了"beego excel的导出和读取操作"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
千家信息网最后更新 2026年11月02日beego excel的导出和读取操作
本篇内容介绍了"beego excel的导出和读取操作"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
/**利用hrpose rpc 连接传输以组合好的数据生成文件https://github.com/hprosephp 项目中引用在你的 composer 项目中的 composer.json 文件中,添加这部分:{ "require": { "hprose/hprose": ">=2.0.0" }}使用$header = ['aaa','cccc','dddd'];$data = [['a1','c1','d1'],['a2','c2','d2'],['a2','c2','d2']];$client = new \Hprose\Http\Client(env('excel_rpc', 'http://192.168.0.230:8881/rpc'), false);//同步执行$b_str = json_encode(array_merge([$header], $data));$path_str = "dc_" . $type . '_' . $this->lang . date('Ymd-His') . '.xlsx';$return_data = json_decode($client->excel($b_str, $path_str), true);Array( [code] => 0 [data] => dc_test20190428-124612.xlsx [msg] => 生成完毕共花费0秒public/excel/dc_test20190428-124612.xlsx)https://github.com/hprose/hprose-php/wiki/05-Hprose-%E5%AE%A2%E6%88%B7%E7%AB%AFgo 部分 go 1.11+ 使用 go.mod 版本go 环境自己搭建go mod downloadbuildgo build -o rpc_excel rpc.go跨平台编译一次编译世界通用CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o bin/rpc_excel_linux rpc_excel.goCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o bin/rpc_excel_win rpc_excel.go*/package mainimport ( "encoding/json" "fmt" "github.com/360EntSecGroup-Skylar/excelize" "github.com/astaxie/beego" "github.com/hprose/hprose-golang/rpc" "github.com/robfig/cron" "os" "strconv" "time" "log" "regexp" "io/ioutil" "runtime" "runtime/debug")func excel(name string, path string) string { var jsonArray [][]string //解析传输过来的二维数组 jsonArray = strjsonArray(name) file := "public/excel/" + path os.Remove(file) fmt.Println(file) f := excelize.NewFile() start1 := time.Now().Unix() // Create a new sheet. for k, v := range jsonArray { if v == nil { /*跳过此次循环*/ continue } for k1, v1 := range v { var si string //大A列 大B列 if k1/26 > 0 { si = string(k1/26 - 1 + 65) + string(k1%26 + 65) } else { si = string(k1%26 + 65) } ki := strconv.Itoa(k + 1) // Set value of a cell. f.SetCellValue("Sheet1", si+ki, typeof(v1)) } } // Save xlsx file by the given path. err := f.SaveAs("../"+file) start2 := time.Now().Unix() var pFile string pFile = fmt.Sprintf("生成完毕共花费%d秒%s", start2-start1, file) fmt.Println(pFile) result := make(map[string]interface{}) result["code"] = 0 result["data"] = path result["msg"] = pFile //内存释放 runtime.GC() debug.FreeOSMemory() if err != nil { fmt.Println(err) result["code"] = -1 result["data"] = "" result["msg"] = err } resA, _ := json.Marshal(result) return string(resA)}func strjsonArray(data string) [][]string { var jsonArray [][]string err := json.Unmarshal([]byte(data), &jsonArray) if err != nil { fmt.Println(err) } return jsonArray}func oneJsonArray(data string) interface{} { var _jsonArray interface{} err := json.Unmarshal([]byte(data), &_jsonArray) if err != nil { fmt.Println(err) } return _jsonArray}type ExcelDelJob struct {}func (this ExcelDelJob)Run() { files, _ := ioutil.ReadDir("../public/excel/") for _, f := range files { fmt.Println(f.Name()) reg := regexp.MustCompile(`(?i:^dc_)*.(\d)+?.xlsx`) if len(reg.FindAllString( f.Name(), -1)) > 0 { file := "../public/excel/" + f.Name() os.Remove(file) log.Println("ExcelDelJob delete ... %s",file) } } log.Println("ExcelDelJob list ...")}func typeof(v interface{}) string { switch t := v.(type) { case string: return t case int: return strconv.Itoa(t) default: _ = t return "" }}/*传入值$data = [['a1','c1','d1'],['a2','c2','d2'],['a2','c2','d2']];这样才能解析{"data":[['a1','c1','d1'],['a2',0,'d2'],['a2','c2',100]]}*/func excelV2(data string, path string) string { //解析传输过来的二维数组 file := "public/excel/" + path os.Remove(file) fmt.Println(file) f := excelize.NewFile() start1 := time.Now().Unix() // Create a new sheet. b := []byte(fmt.Sprintf("{\"data\":%s}",data)) var bf interface{} err := json.Unmarshal(b, &bf) if err != nil { fmt.Println(err) } m := bf.(map[string]interface{}) switch vv := m["data"].(type) { case string: fmt.Println(vv, "is string", vv) case int: fmt.Println(vv, "is int", vv) case []interface{}: //fmt.Println(vv, "is an array:") //大行 for k, u := range vv { switch vvv := u.(type) { case string: fmt.Println(k, "is string", vvv) case int: fmt.Println(k, "is int", vvv) case []interface{}: //大列 for k1, u1 := range vvv { var si string //大A列 大B列 if k1/26 > 0 { si = string(k1/26 - 1 + 65) + string(k1%26 + 65) } else { si = string(k1%26 + 65) } ki := strconv.Itoa(k + 1) switch u11 := u1.(type) { case int: f.SetCellInt("Sheet1", si+ki, u11) break default: f.SetCellValue("Sheet1", si+ki, u11) } //f.SetCellValue("Sheet1", si+ki, u1) } default: fmt.Println("is of a type I don't know how to handle") } } default: fmt.Println( vv," is of a type I don't know how to handle") } // Save xlsx file by the given path. err = f.SaveAs("../"+file) start2 := time.Now().Unix() var pFile string pFile = fmt.Sprintf("生成完毕共花费%d秒%s", start2-start1, file) fmt.Println(pFile) result := make(map[string]interface{}) result["code"] = 0 result["data"] = path result["msg"] = pFile //内存释放 runtime.GC() debug.FreeOSMemory() if err != nil { fmt.Println(err) result["code"] = -1 result["data"] = "" result["msg"] = err } resA, _ := json.Marshal(result) return string(resA)}func excelRead(path string) string { result := struct { Code int `json:"code""` Msg string `json:"msg"` Date interface{} `json:"data"` }{} xls_os, error := excelize.OpenFile(path) if error != nil { result.Code = 0 result.Msg = error.Error() result.Date = []string{} err_str, _ := json.Marshal(result) return string(err_str) } xls_data := xls_os.GetRows(xls_os.GetSheetName(1)) result.Code = 1 result.Msg = "ok" result.Date = xls_data res_data, _ := json.Marshal(result) return string(res_data)}func main() { runtime.GOMAXPROCS(runtime.NumCPU()) //计划任务 c := cron.New() spec := "0 0 */1 * * ?" //spec20 := "0 */1 * * * ?" //i := 0 //c.AddFunc(spec20, func() { // i++ // log.Println("内存回收cron running:", i) //}) c.AddJob(spec,ExcelDelJob{}) //启动计划任务 c.Start() //关闭着计划任务, 但是不能关闭已经在执行中的任务. defer c.Stop() service := rpc.NewHTTPService() service.AddFunction("excel", excel) service.AddFunction("excelV2", excelV2) service.AddFunction("excelRead", excelRead) beego.Handler("/rpc", service) beego.BConfig.Listen.HTTPPort = 8881 beego.Run()}"beego excel的导出和读取操作"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
任务
生成
内存
传输
内容
数组
文件
更多
知识
项目
二维
编译
实用
学有所成
接下来
世界
困境
实际
情况
数据
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司
河南真二互联网科技有限公司
互联网科技的
科技制造互联网公司
互联网 科技
浩特互联网科技
九亚互联网科技
美国互联网黑科技
狮子座互联网科技培训
新华互联网科技校企合作
云创客互联网科技公司
互联网科技中介
哈尔滨屹滨互联网科技有限公司
国大互联网教育科技有限公司工作
晋城互联网科技
中和天地互联网科技有限公司
每天都有哪些好的互联网科技
互联网科技接地气
唐山双旺合互联网科技产业园
网互联网络科技
互联网科技
百单网互联网科技有限公司
互联网科技公司起名
高科技互联网
金融科技与互联网金融
互联网科技缩写
狮子座互联网科技培训
互联网 新科技
海南购全球互联网科技
保山浩联互联网科技有限公司