using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using NPOI.HSSF.UserModel; using StackExchange.Redis; using Newtonsoft.Json.Linq; using System.IO; using CSharpUtil; namespace StatisticsTransfer.tongji { class TargetStatistics { /// /// 指标累计值数据转为execl表 /// public static void TargetValToExecl() { var mem = Redis.Ins.GetDatabase(1); int zoneid = 1; HashEntry[] ctxList = mem.HashGetAll(MemKey_Statistics.TargetStatistics(zoneid)); int length = ctxList.Length; if (length <= 0) { return; } Dictionary> dic = new Dictionary>(); foreach (var item in ctxList) { string type = item.Name; int num = int.Parse(item.Value); string[] clist = type.Split('-'); string nType = targetType(clist[0]); if (dic.ContainsKey(nType)) { dic[nType].Add(type, num); } else { var itemDic = new Dictionary { { type, num } }; dic[nType] = itemDic; } } HSSFWorkbook workbook = new HSSFWorkbook(); foreach (KeyValuePair> kv in dic) { Dictionary dict = kv.Value; Console.WriteLine("kv--key-----........" + kv.Key); string tableName = "指标统计表_" + kv.Key; //创建工作表 var sheet = workbook.CreateSheet(tableName); var row = sheet.CreateRow(0); //创建单元格 var cellid = row.CreateCell(0); cellid.SetCellValue("指标描述信息"); var cellname = row.CreateCell(1); cellname.SetCellValue("指标类型"); var cellpwd = row.CreateCell(2); cellpwd.SetCellValue("指标累计值"); int x = 1; foreach (KeyValuePair kt in dict) { string type = kt.Key; int num = kt.Value; string desc = TargetDesc(type); //Console.WriteLine("ktttt--type-----........" + type); //Console.WriteLine("ktttt--name-----........" + desc); var rowi = sheet.CreateRow(x); var cdesc = rowi.CreateCell(0); cdesc.SetCellValue(desc); var cType = rowi.CreateCell(1); cType.SetCellValue(type); var cnum = rowi.CreateCell(2); cnum.SetCellValue(num); x += 1; } } string txtName = "指标累计信息表_" + "zone" + zoneid + "-day-" + DateTime.Now.ToString("yyyyMMdd"); string filename = Config.Ins.OutDir + txtName + ".xls"; if (File.Exists(filename)) { File.Delete(filename); } FileStream file = new FileStream(filename, FileMode.CreateNew, FileAccess.Write); workbook.Write(file); file.Dispose(); Console.WriteLine("指标累计execl完成........"); } public static string TargetDesc(string type) { string[] sList = type.Split('-'); var mem = Redis.Ins.GetDatabase(1); string desc = ""; switch (sList[0]) { case "registerUserNum": desc = "注册人数累计"; break; case "comNewGuideUserNum": desc = "完成新手引导人数累计"; break; case "unlockbuidId": string ctx = mem.HashGet(MemKey_Cfg.build, sList[1]); JObject ctxDic = JObject.Parse(ctx); string s = ctxDic["name"].ToString(); desc = "累计解锁建筑-" + s + "的人数"; break; case "mainTaskId_ComUserNum"://主线任务id--完成人数 desc = "完成主线任务id-" + sList[1] + "的人数"; break; case "shopTaskId_ComUserNum": desc = "完成悬赏任务id-" + sList[1] + "的人数"; break; case "shopTaskId_BuyUserNum": desc = "购买悬赏任务id-" + sList[1] + "的人数"; break; case "collegeTaskId_ComUserNum": desc = "完成学院任务id-" + sList[1] + "的人数"; break; case "collegeCouseId_UnlockUserNum": desc = "解锁学院课程id-" + sList[1] + "的人数"; break; case "dailyTaskId_ComUserNum": desc = "完成日常任务id-" + sList[1] + "的人数"; break; case "storyGateId_ComUserNum": desc = "完成剧情关卡id-" + sList[1] + "的人数"; break; case "storyGateId_BattleNum": desc = "剧情关卡id-" + sList[1] + "的挑战次数/通关次数"; break; case "HuanLingShiGateId_ComUserNum": desc = "完成副本唤灵师关卡id-" + sList[1] + "的人数"; break; case "HuanLingShiGateId_BattleNum": desc = "完成副本唤灵师关卡id-" + sList[1] + "的挑战次数/通关次数"; break; case "WeaponGateId_ComUserNum": desc = "完成副本武器关卡id-" + sList[1] + "的人数"; break; case "WeaponGateId_BattleNum": desc = "完成副本武器关卡id-" + sList[1] + "的挑战次数/通关次数"; break; case "YanLingGateId_ComUserNum": desc = "完成副本言灵关卡id-" + sList[1] + "的人数"; break; case "YanLingGateId_BattleNum": desc = "完成副本言灵关卡id-" + sList[1] + "的挑战次数/通关次数"; break; case "userlevel": desc = "玩家等级为" + sList[1] + "的人数"; break; case "newUserLotteryDraw_one": desc = "新手池抽卡单次抽奖的访问频率"; break; case "newUserLotteryDraw_ten": desc = "新手池抽卡十连抽的访问频率"; break; case "yanLingLotteryDraw_one": desc = "言灵活动祈愿奖池单次抽奖的访问频率"; break; case "yanLingLotteryDraw_ten": desc = "言灵活动祈愿奖池十连抽的访问频率"; break; case "weaponLotteryDraw_one": desc = "武器活动祈愿奖池单次抽奖的访问频率"; break; case "weaponLotteryDraw_ten": desc = "武器活动祈愿奖池十连抽的访问频率"; break; case "commonLotteryDraw_one": desc = "常驻祈愿奖池单次抽奖的访问频率"; break; case "commonLotteryDraw_ten": desc = "常驻祈愿奖池十连抽的访问频率"; break; case "HuanLingShiLevel_UserNum": desc = "唤灵师" + sList[1] + "等级为" + sList[2] + "的人数"; break; case "HuanLingShiId_UserNum": desc = "拥有唤灵师" + sList[1] + "的人数"; break; case "YanLingId_UserNum": desc = "拥有言灵" + sList[1] + "的人数"; break; case "YanLingIdLevel_UserNum": desc = "言灵" + sList[1] + "等级为" + sList[2] + "的人数"; break; case "WeaponId_UserNum": desc = "拥有武器" + sList[1] + "的人数"; break; case "WeaponIdLevel_UserNum": desc = "武器" + sList[1] + "等级为" + sList[2] + "的人数"; break; } return desc; } public static string targetType(string t) { string type = ""; switch (t) { case "registerUserNum": type = "registerUserNum"; break; case "comNewGuideUserNum": type = "comNewGuideUserNum"; break; case "unlockbuidId": type = "unlockbuidId"; break; case "mainTaskId_ComUserNum"://主线任务id--完成人数 type = "mainTask"; break; case "shopTaskId_ComUserNum": type = "shopTask"; break; case "shopTaskId_BuyUserNum": type = "shopTask"; break; case "collegeTaskId_ComUserNum": type = "collegeTask"; break; case "collegeCouseId_UnlockUserNum": type = "collegeTask"; break; case "dailyTaskId_ComUserNum": type = "dailyTask"; break; case "storyGateId_ComUserNum": type = "storyGate"; break; case "storyGateId_BattleNum": type = "storyGate"; break; case "HuanLingShiGateId_ComUserNum": type = "HuanLingShiGate"; break; case "HuanLingShiGateId_BattleNum": type = "HuanLingShiGate"; break; case "WeaponGateId_ComUserNum": type = "WeaponGate"; break; case "WeaponGateId_BattleNum": type = "WeaponGate"; break; case "YanLingGateId_ComUserNum": type = "YanLingGate"; break; case "YanLingGateId_BattleNum": type = "YanLingGate"; break; case "userlevel": type = "userlevel"; break; case "newUserLotteryDraw_one": type = "LotteryDraw"; break; case "newUserLotteryDraw_ten": type = "LotteryDraw"; break; case "yanLingLotteryDraw_one": type = "LotteryDraw"; break; case "yanLingLotteryDraw_ten": type = "LotteryDraw"; break; case "weaponLotteryDraw_one": type = "LotteryDraw"; break; case "weaponLotteryDraw_ten": type = "LotteryDraw"; break; case "commonLotteryDraw_one": type = "LotteryDraw"; break; case "commonLotteryDraw_ten": type = "LotteryDraw"; break; case "HuanLingShiLevel_UserNum": type = "HuanLingShi"; break; case "HuanLingShiId_UserNum": type = "HuanLingShi"; break; case "YanLingId_UserNum": type = "YanLing"; break; case "YanLingIdLevel_UserNum": type = "YanLing"; break; case "WeaponId_UserNum": type = "Weapon"; break; case "WeaponIdLevel_UserNum": type = "Weapon"; break; } return type; } } }