package main import ( "log" "mongodb" "os" qu "qfw/util" "regexp" "strconv" // "github.com/lauyoume/gopinyin" "time" "github.com/tealeg/xlsx" ) type Config struct { MgoAddr string `json:"mgoAddr"` MgoDbName string `json:"mgoDbName"` MgoColl string `json:"mgoColl"` MgoSize int `json:"mgoSize"` DataType int `json:"dataType"` ExportType int `json:"exportType"` TermFind map[string]interface{} `json:"termFind"` KeyWordFind map[string]map[string]interface{} `json:"keyWordFind"` Fields map[string]string `json:"fields"` FieldSort []string `json:"fieldSort"` } var ( sysConfig Config Mgo *mongodb.MongodbSim SE = qu.SimpleEncrypt{Key: "topJYBX2019"} ClearHtml = regexp.MustCompile("<[^>]*>") ClearOther = regexp.MustCompile("[\n\r\\s\u3000\u2003\u00a0]") MaxWorker = os.Getenv("MAX_WORKERS") MaxQueue = os.Getenv("MAX_QUEUE") // industry = []string{"烟草", "军队", "教育", "公安", "税务", "能源", "金融", "数字政府", "水利", "应急管理", "公路", "生态环境", "纪委", "自然资源", "运营商", "机场", "法院", "检察院", "铁路", "轨道交通"} ) func init() { qu.ReadConfig(&sysConfig) log.Println("配置加载成功") Mgo = &mongodb.MongodbSim{ MongodbAddr: "172.17.145.163:27083", DbName: "mixdata", Size: 20, UserName: "JS3Z_Rbid_ProG", Password: "JS3Z@B5I3aR7Ch", } Mgo.InitPool() log.Println("数据库加载成功") } func GetXlsxs(mMap []map[string]interface{}) { xf := xlsx.NewFile() sh, _ := xf.AddSheet("详细数据") for _, v := range mMap { row := sh.AddRow() cell1 := row.AddCell() cell2 := row.AddCell() cell1.SetString(qu.ObjToString(v["company_name"])) cell2.SetString(qu.ObjToString(v["credit_no"])) } //生文件 t := strconv.FormatInt(time.Now().Unix(), 10) dir := "./xlsx/" + t + "/" if b, _ := PathExists(dir); !b { err1 := os.MkdirAll(dir, os.ModePerm) if err1 != nil { log.Println("mkdir err", dir) } } fname := "_" + t + ".xlsx" err := xf.Save(dir + fname) if err != nil { log.Println("xls error", fname) } } func PathExists(path string) (bool, error) { _, err := os.Stat(path) if err == nil { return true, nil } if os.IsNotExist(err) { return false, nil } return false, err } func main() { query := map[string]interface{}{} count, session := 0, Mgo.GetMgoConn() defer func() { Mgo.DestoryMongoConn(session) }() iter := session.DB("mixdata").C("winner_enterprise").Find(&query).Select(map[string]interface{}{"company_name": 1, "credit_no": 1}).Sort("_id").Iter() data := []map[string]interface{}{} datas := []map[string]interface{}{} datass := []map[string]interface{}{} thisData := map[string]interface{}{} for { if !iter.Next(&thisData) { break } count++ log.Println("第", count, "条") company_name := qu.ObjToString(thisData["company_name"]) credit_no := qu.ObjToString(thisData["credit_no"]) if company_name != "" && credit_no != "" { a := map[string]interface{}{ "company_name": company_name, "credit_no": credit_no, } if count > 900000 { if count > 1800000 { datass = append(datass, a) } else { datas = append(datas, a) } } else { data = append(data, a) } } else { log.Println("信息为空", company_name, credit_no) } } if len(data) > 0 { log.Println("数据条数 ", len(data)) log.Println("数据条数 ", len(datas)) log.Println("数据条数 ", len(datass)) GetXlsxs(data) GetXlsxs(datas) GetXlsxs(datass) log.Println("生成excel成功") } }