package main import ( "flag" "fmt" "github.com/tealeg/xlsx" "go.mongodb.org/mongo-driver/bson" mgo "mongodb" qu "qfw/util" "util" ) var ( path string Mgo *mgo.MongodbSim ) func init() { Mgo = &mgo.MongodbSim{ MongodbAddr: "192.168.3.166:27082", // 127.0.0.1:27084 Size: 5, DbName: "jyqykhfw", } Mgo.InitPool() } func main() { flag.StringVar(&path, "f", "", "文件路径") flag.Parse() if path != "" { file, err := xlsx.OpenFile(path) if err != nil { panic(err) } sheet := file.Sheets[0] cellFieldName := map[int]string{} for rn, row := range sheet.Rows { if rn == 0 { for index, cell := range row.Cells { //if cell.Value == "招标人" || cell.Value == "中标人" || cell.Value == "中标金额" { // qu.Debug(cell.Value, index) //} if v := FieldsMap[cell.Value]; v != "" { cellFieldName[index] = v } } } else { q := bson.M{} for i, f := range cellFieldName { if val := row.Cells[i].Value; val != "" && (f == "s_winner" || f == "buyer") { q[f] = val } if val := row.Cells[i].Value; val != "" && f == "bidamount" { if qu.Float64All(val) != 0 { q[f] = qu.Float64All(val) } } } info, _ := Mgo.FindOne("zglt_history", q) if len(*info) > 0 { row.Cells[12].SetValue(-1) } else { row.Cells[12].SetValue(1) } } } err = file.Save(path) } else { flag.PrintDefaults() } } var FieldsMap = map[string]string{ "是否优选": "is_push", "运营商中标标签": "tagname", "主体公司": "tagname2", "中标人": "s_winner", "招标人": "buyer", "中标金额": "bidamount", } func main1() { flag.StringVar(&path, "f", "", "文件路径") flag.Parse() if path != "" { file, err := xlsx.OpenFile(path) if err != nil { panic(err) } sheet := file.Sheets[0] idcolnum := -1 cellFieldName := map[int]string{} update := make(map[string]interface{}) for rn, row := range sheet.Rows { if rn == 0 { for index, cell := range row.Cells { if cell.Value == "唯一标识" || cell.Value == "标讯编码(infoID)" { //id所在列 idcolnum = index } if v := FieldsMap[cell.Value]; v != "" { cellFieldName[index] = v } } if idcolnum == -1 { break } continue } else { id := row.Cells[idcolnum].String() id = util.SE.DecodeString(id) for i, f := range cellFieldName { if val := row.Cells[i].Value; val != "" { if f == "is_push" { update[f] = qu.IntAll(val) } else { update[fmt.Sprintf("v_baseinfo.%s", f)] = val } } } qu.Debug(id, update) Mgo.UpdateById("f_sourceinfo_chinaunicom_zb_data", id, bson.M{"$set": update}) } } err = file.Save(path) } else { flag.PrintDefaults() } }