beego excel的导出和读取操作
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容介绍了"beego excel的导出和读取操作"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
千家信息网最后更新 2025年12月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安全错误
数据库的锁怎样保障安全
中国电信网络安全专业就业方向
服务器如何找网页文件
三级网络技术知识
智能控制软件开发公司
连云港新品服务器价格
中科大网络安全协议课堂测试
软件开发的风险分析与评估
广州地产软件开发电话
安徽省公安厅网络安全总队
网络安全比赛啥意思
网络安全宣传周山东省活动
南城金蝶管理软件开发
sql语言可以删除数据库吗
微软云rds数据库加密
软件开发竞争是什么
步道乐跑服务器繁忙没打上卡
中电科技网络安全
江苏教育网络技术竞赛
内网服务器软件慢
游戏服务器租客注意事项
中国移动网络安全资质
游戏软件开发的有钱吗
上海现代软件开发试验设备
服务器iis管理器在哪
数据库表加索引
计算机网络技术的利与弊
保定证券软件开发
西部证券服务器已关闭
重庆银行 软件开发公司
数据库技术论坛