/// <summary> /// 微信认证 /// https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx24e47efa56c2e554&redirect_uri=http%3a%2f%2fmap.lywenkai.cn%2fWeChatManage%2fWeiXinHome%2fRedirect&response_type=code&scope=snsapi_userinfo&state=http%3a%2f%2fmap.lywenkai.cn%2fWeChatManage%2fLogin%2fIndex#wechat_redirect /// </summary> /// <param name="code">snsapi_userinfo</param> /// <param name="state">回调url</param> /// <returns></returns> public ActionResult Redirect(string code, string state) { LogHelper.AddLog($"微信认证请求地址:{System.Web.HttpContext.Current.Request.Url.ToString()} 参数code: {code},参数state: {state}"); //若用户禁止授权,则重定向后不会带上code参数 if (string.IsNullOrEmpty(code)) { return(Redirect(state)); } else { WeixinToken token = new WeixinToken(); //判断是否保存微信token,用户网页授权,不限制 if (Session[WebSiteConfig.WXTOKEN_SESSION_NAME] != null) { token = Session[WebSiteConfig.WXTOKEN_SESSION_NAME] as WeixinToken; } else { string tokenUrl = string.Format(WeixinConfig.GetTokenUrl2, code); LogHelper.AddLog($"请求tokenUrl地址: {tokenUrl}"); token = AnalyzeHelper.Get <WeixinToken>(tokenUrl); if (token.errcode != null) { return(Content("网页授权Error:" + token.errcode + ":" + token.errmsg)); } Session[WebSiteConfig.WXTOKEN_SESSION_NAME] = token; } Session["OpenId"] = token.openid;//进行登录 LogHelper.AddLog($"token.openid: {Session["OpenId"]}"); //查询用户是否存在 var userEntity = wechatUserBll.GetEntity(token.openid); if (userEntity == null) { string userInfoUrl = string.Format(WeixinConfig.GetUserInfoUrl2, token.access_token, token.openid); var userInfo = AnalyzeHelper.Get <WeixinUserInfo>(userInfoUrl); if (userInfo.errcode != null) { Response.Write(userInfo.errcode + ":" + userInfo.errmsg); Response.End(); } else { userEntity = new WeChat_UsersEntity() { City = userInfo.city, Country = userInfo.country, HeadimgUrl = userInfo.headimgurl, NickName = userInfo.nickname, OpenId = userInfo.openid, Province = userInfo.province, Sex = userInfo.sex, AppName = Config.GetValue("AppName2") }; wechatUserBll.SaveForm("", userEntity); } } Session[WebSiteConfig.WXUSER_SESSION_NAME] = userEntity; return(Redirect(state)); } }
public static void OptiEffects(List <AnalyzeObject> result) { List <GameObject> effects = new List <GameObject>(); AnalyzeHelper.GetAllPrefabs(AnalyzeConfig.EffectPath, effects); List <Material> mats = new List <Material>(); for (int i = 0; i < effects.Count; i++) { mats.Clear(); Transform[] trans = effects[i].GetComponentsInChildren <Transform>(); SkinnedMeshRenderer[] smrs = effects[i].GetComponentsInChildren <SkinnedMeshRenderer>(); MeshFilter[] mfs = effects[i].GetComponentsInChildren <MeshFilter>(); MeshRenderer[] mrs = effects[i].GetComponentsInChildren <MeshRenderer>(); ParticleSystem[] pss = effects[i].GetComponentsInChildren <ParticleSystem>(); AnalyzeHelper.GetMats(smrs, mats); AnalyzeHelper.GetMats(mrs, mats); AnalyzeHelper.GetMats(pss, mats); int tris = AnalyzeHelper.GetTris(smrs) + AnalyzeHelper.GetTris(mfs) + AnalyzeHelper.GetTris(pss); AnalyzeEffect opt = new AnalyzeEffect(); opt.Prefab = effects[i]; opt.MeshCount = smrs.Length + mfs.Length; opt.TransCount = trans.Length - 1; opt.Materials = mats.Count; opt.Particles = pss.Length; opt.Tris = tris; result.Add(opt); } result.Sort(delegate(AnalyzeObject m1, AnalyzeObject m2) { return((m2 as AnalyzeEffect).Particles.CompareTo((m1 as AnalyzeEffect).Particles)); }); }
//跳转 public ActionResult Redirect(string code, string state) { //若用户禁止授权,则重定向后不会带上code参数 if (string.IsNullOrEmpty(code)) { return(Redirect(state)); } else { WeixinToken token = new WeixinToken(); //判断是否保存微信token if (Session[WebSiteConfig.WXTOKEN_SESSION_NAME] != null) { token = Session[WebSiteConfig.WXTOKEN_SESSION_NAME] as WeixinToken; } else { string tokenUrl = string.Format(WeixinConfig.GetTokenUrl, code); token = AnalyzeHelper.Get <WeixinToken>(tokenUrl); if (token.errcode != null) { return(Content(token.errcode + ":" + token.errmsg)); } Session[WebSiteConfig.WXTOKEN_SESSION_NAME] = token; } //查询用户是否存在 var userEntity = userBll.GetEntity(token.openid); if (userEntity == null) { string userInfoUrl = string.Format(WeixinConfig.GetUserInfoUrl, token.access_token, token.openid); var userInfo = AnalyzeHelper.Get <WeixinUserInfo>(userInfoUrl); if (userInfo.errcode != null) { Response.Write(userInfo.errcode + ":" + userInfo.errmsg); Response.End(); } else { userEntity = new WeChat_UsersEntity() { City = userInfo.city, Country = userInfo.country, HeadimgUrl = userInfo.headimgurl, NickName = userInfo.nickname, OpenId = userInfo.openid, Province = userInfo.province, Sex = userInfo.sex, AppName = WeixinConfig.AppName }; userBll.SaveForm("", userEntity); } } Session[WebSiteConfig.WXUSER_SESSION_NAME] = userEntity; return(Redirect(state)); } }
// 点击“打开Excel母表”按钮 private void btnOpenExcelFile_Click(object sender, EventArgs e) { string excelFilePath = txtExcelPath.Text.Trim(); if (string.IsNullOrEmpty(excelFilePath)) { MessageBox.Show("请先输入或选择国际化Excel母表所在路径", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } FileState fileState = Utils.GetFileState(excelFilePath); if (fileState == FileState.Inexist) { MessageBox.Show("输入的国际化Excel母表所在路径不存在,建议点击\"选择\"按钮进行文件选择", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (!AppValues.EXCEL_FILE_EXTENSION.Equals(Path.GetExtension(excelFilePath), StringComparison.CurrentCultureIgnoreCase)) { MessageBox.Show(string.Format("本工具仅支持读取扩展名为{0}的Excel文件", AppValues.EXCEL_FILE_EXTENSION), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (fileState == FileState.IsOpen) { MessageBox.Show("该Excel文件正被其他软件打开,请关闭后重试", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // 读取设置的注释行开头字符 _SetCommentLineStartChar(); // 解析Excel母表 string errorString = null; LangExcelInfo langExcelInfo = AnalyzeHelper.AnalyzeLangExcelFile(excelFilePath, AppValues.CommentLineStartChar, out errorString); if (errorString == null) { AppValues.ExcelFullPath = Path.GetFullPath(excelFilePath); // 当重新选择了Excel母表文件后重置窗口控件 _ChangeStateWhenSetExcelPath(false); AppValues.LangExcelInfo = langExcelInfo; // 设置了合法的Excel母表后,可以使用各个子模块功能 _ChangeStateWhenSetExcelPath(true); } else { MessageBox.Show(string.Format("选定的Excel母表存在以下错误,请修正后重试\n\n{0}", errorString), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } }
public override void Parse() { if (this.Dependencies != null) { this.Dependencies.Clear(); } if (this.Standard != null) { this.Standard.Clear(); } var scene = EditorSceneManager.GetSceneByName(this.Name); if (scene == null || !scene.IsValid()) { EditorSceneManager.OpenScene(this.Path); scene = EditorSceneManager.GetSceneByName(this.Name); } if (scene != null && scene.IsValid()) { GameObject[] objs = scene.GetRootGameObjects(); List <Material> mats = new List <Material>(); int tris = 0; for (int i = 0; i < objs.Length; i++) { SkinnedMeshRenderer[] smrs = objs[i].GetComponentsInChildren <SkinnedMeshRenderer>(true); MeshRenderer[] mrs = objs[i].GetComponentsInChildren <MeshRenderer>(true); MeshFilter[] mfs = objs[i].GetComponentsInChildren <MeshFilter>(true); AnalyzeHelper.GetMats(mrs, mats); AnalyzeHelper.GetMats(smrs, mats); tris += AnalyzeHelper.GetTris(mfs); tris += AnalyzeHelper.GetTris(smrs); } this.Dependencies = mats; this.Tris = tris; } if (this.Dependencies == null) { this.Dependencies = new List <Material>(); } for (int i = 0; i < this.Dependencies.Count; i++) { if (this.Dependencies[i] != null && this.Dependencies[i].shader != null && this.Dependencies[i].shader.name.StartsWith("Stand")) { this.Standard.Add(this.Dependencies[i]); } } }
public static void OptiUI(List <AnalyzeObject> result) { List <GameObject> uis = new List <GameObject>(); AnalyzeHelper.GetAllPrefabs(AnalyzeConfig.UIPath, uis); for (int i = 0; i < uis.Count; i++) { AnalyzeUI ui = new AnalyzeUI(); ui.Prefab = uis[i]; ui.Parse(); result.Add(ui); } result.Sort(delegate(AnalyzeObject m1, AnalyzeObject m2) { return((m2 as AnalyzeUI).FileSize.CompareTo((m1 as AnalyzeUI).FileSize)); }); }
public ActionResult Analyze(AnalyzeCaseViewModel model) { AnalysisResultModel resultModel = new AnalysisResultModel(); if (ModelState.IsValid) { if (model.IsURL) { if (!AnalyzeHelper.IsURLText(model.Text)) { ModelState.AddModelError("Text", "Please type the URL in correct pattern: http://www.example.com"); return(View(model)); } if (model.IsCheckingNumberOfWords) { resultModel.OccuredWords = _analyzeService.GetWordOccurrencesFromUrl(model.Text); } if (model.IsListingMetaTags) { resultModel.MetaTagWords = _analyzeService.GetMetaTagWordsFromUrl(model.Text); } if (model.IsListingExternalLinks) { resultModel.ExternalLinksList = _analyzeService.GetExternalLinksFromUrl(model.Text); } } else { if (model.IsCheckingNumberOfWords) { resultModel.OccuredWords = _analyzeService.GetWordOccurrencesFromText(model.Text); } if (model.IsListingMetaTags) { resultModel.MetaTagWords = _analyzeService.GetMetaTagWordsFromText(model.Text); } if (model.IsListingExternalLinks) { resultModel.ExternalLinksList = _analyzeService.GetExternalLinksFromText(model.Text); } } } return(PartialView("AnalysisSummary", resultModel)); }
public static void OptiText(List <AnalyzeObject> result) { List <GameObject> uis = new List <GameObject>(); AnalyzeHelper.GetAllPrefabs(AnalyzeConfig.UIPath, uis); for (int i = 0; i < uis.Count; i++) { Text[] texts = uis[i].GetComponentsInChildren <Text>(true); for (int j = 0; j < texts.Length; j++) { ParseOptiText(result, texts[j]); } } result.Sort(delegate(AnalyzeObject m1, AnalyzeObject m2) { return((m2 as AnalyzeText).Texts.Count.CompareTo((m1 as AnalyzeText).Texts.Count)); }); }
public void IsURLText_Should_Return_False_When_URLPattern_False() { var dic = new Dictionary <string, bool>() { { "this", false }, { "http://www.google.com", true }, { "/page.aspx", false }, { "//page.aspx", false }, { "/httf/something", false }, { "httf://something.cover.com", false }, }; foreach (var item in dic) { var actual = AnalyzeHelper.IsURLText(item.Key); var expected = item.Value; Assert.AreEqual(expected, actual); } }
//获得微信js sdk config protected BaseWxModel GetWxModel() { BaseWxModel model = new BaseWxModel(); model.appid = WeixinConfig.AppID; model.timestamp = JSSDKHelper.GetTimestamp(); model.nonce = JSSDKHelper.GetNoncestr(); model.thisUrl = Request.Url.ToString();//MyCommFun.getTotalUrl(); //string ticket = JsApiTicketContainer.TryGetJsApiTicket(WeixinConfig.AppID, WeixinConfig.AppSecret); //https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi var cacheTicket = CacheFactory.Cache().GetCache <string>("jsapi_ticket"); if (cacheTicket == null) { //全局token var cacheToken = CacheFactory.Cache().GetCache <string>("access_token"); if (cacheToken == null) { var userInfoBase = AnalyzeHelper.Get <WeixinTokenBase>(WeixinConfig.GetTokenBaseUrl); cacheToken = userInfoBase.access_token; CacheFactory.Cache().WriteCache(cacheToken, "access_token", DateTime.Now.AddSeconds(7000)); } string ticketUrl = string.Format(WeixinConfig.GetTicketUrl, cacheToken); var ticketModel = AnalyzeHelper.Get <WeixinTicket>(ticketUrl); cacheTicket = ticketModel.ticket; if (!string.IsNullOrEmpty(cacheTicket)) { CacheFactory.Cache().WriteCache(cacheTicket, "jsapi_ticket", DateTime.Now.AddSeconds(7000)); } } JSSDKHelper jsHelper = new JSSDKHelper(); //最后一个参数url,必须为当前的网址 var signature = JSSDKHelper.GetSignature(cacheTicket, model.nonce, model.timestamp, model.thisUrl); model.signature = signature; return(model); }
public static void OptiRole(List <AnalyzeObject> result) { List <GameObject> monsters = new List <GameObject>(); AnalyzeHelper.GetAllPrefabs(AnalyzeConfig.RolePath, monsters); List <Material> mats = new List <Material>(); for (int i = 0; i < monsters.Count; i++) { mats.Clear(); Transform child = monsters[i].transform.Find("root"); if (child == null) { child = monsters[i].transform.Find("Bip001"); } if (child == null) { Debug.LogError(monsters[i] + " cant find root bone!"); child = monsters[i].transform; } Transform[] trans = child.GetComponentsInChildren <Transform>(); SkinnedMeshRenderer[] smrs = monsters[i].GetComponentsInChildren <SkinnedMeshRenderer>(); AnalyzeHelper.GetMats(smrs, mats); int tris = AnalyzeHelper.GetTris(smrs); AnalyzeRole opt = new AnalyzeRole(); opt.Tris = tris; opt.Prefab = monsters[i]; if (smrs.Length > 0 && smrs[0].sharedMaterial != null) { opt.Mat = smrs[0].sharedMaterial; opt.Shader = smrs[0].sharedMaterial.shader; } result.Add(opt); } result.Sort(delegate(AnalyzeObject m1, AnalyzeObject m2) { return((m2 as AnalyzeRole).Tris.CompareTo((m1 as AnalyzeRole).Tris)); }); }
/// <summary> /// 微信认证 /// https://open.weixin.qq.com/connect/oauth2/authorize /// ?appid=wx24e47efa56c2e554 /// &redirect_uri=http%3a%2f%2fmap.lywenkai.cn%2fWeChatManage%2fWeiXinHome%2fRedirect /// &response_type=code&scope=snsapi_userinfo /// &state=http%3a%2f%2fmap.lywenkai.cn%2fWeChatManage%2fLogin%2fIndex /// #wechat_redirect /// </summary> /// <param name="code">snsapi_userinfo</param> /// <param name="state">回调url</param> /// <returns></returns> public ActionResult Redirect(string code, string state) { //若用户禁止授权,则重定向后不会带上code参数 if (string.IsNullOrEmpty(code)) { return(Redirect(state)); } else { WeixinToken token = new WeixinToken(); //判断是否保存微信token,用户网页授权access_token,不限制,,拿到授权access_token和openid if (Session[WebSiteConfig.WXTOKEN_SESSION_NAME] != null) { token = Session[WebSiteConfig.WXTOKEN_SESSION_NAME] as WeixinToken; } else { string tokenUrl = string.Format(WeixinConfig.GetTokenUrl, code); token = AnalyzeHelper.Get <WeixinToken>(tokenUrl); if (token.errcode != null) { return(Content(token.errcode + ":" + token.errmsg)); } Session[WebSiteConfig.WXTOKEN_SESSION_NAME] = token; } //查询用户是否存在 var userEntity = wechatUserBll.GetEntity(token.openid); if (userEntity == null) { #region CacheFactory方式获取token ////全局token--基础access_token,每日限额2000 //var cacheToken = CacheFactory.Cache().GetCache<string>("access_token"); //if (cacheToken == null) //{ // var userInfoBase = AnalyzeHelper.Get<WeixinTokenBase>(WeixinConfig.GetTokenBaseUrl); // cacheToken = userInfoBase.access_token; // CacheFactory.Cache().WriteCache(cacheToken, "access_token", DateTime.Now.AddSeconds(7000)); //} #endregion //改成盛派容器获取基础token string base_token = TemplateWxApp.getToken(); //获取AccessToken结果 string userInfoUrl = string.Format(WeixinConfig.GetUserInfoUrl, base_token, token.openid); var userInfo = AnalyzeHelper.Get <WeixinUserInfo>(userInfoUrl); if (userInfo.errcode != null) { Response.Write(userInfo.errcode + ":" + userInfo.errmsg); Response.End(); } else { LogHelper.AddLog("用户关注状态:" + userInfo.subscribe.ToString()); if (userInfo.subscribe != 1) { //未关注 //未关注先跳转关注https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzU3MzczNTY4Mw==#wechat_redirect //微信7.0之后限制,加载完成之后按钮一闪而逝,WeixinConfig.BizUrl,生成二维码,从微信打开该链接即可 return(RedirectToAction("Guanzhu", "Brand")); } userEntity = new WeChat_UsersEntity() { City = userInfo.city, Country = userInfo.country, HeadimgUrl = userInfo.headimgurl, NickName = userInfo.nickname, OpenId = userInfo.openid, Province = userInfo.province, Sex = userInfo.sex, AppName = Config.GetValue("AppName") }; wechatUserBll.SaveForm("", userEntity); } } Session[WebSiteConfig.WXUSER_SESSION_NAME] = userEntity; return(Redirect(state)); } }
// 点击“合并翻译完的Excel文件”按钮 private void btnMergeTranslatedExcelFile_Click(object sender, EventArgs e) { // 检查是否指定了合法的合并后的Excel文件的保存路径 string mergedExcelSavePath = txtMergedExcelPath.Text.Trim(); if (string.IsNullOrEmpty(mergedExcelSavePath)) { MessageBox.Show("必须输入合并后的Excel文件的保存路径", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (!AppValues.EXCEL_FILE_EXTENSION.Equals(Path.GetExtension(mergedExcelSavePath), StringComparison.CurrentCultureIgnoreCase)) { MessageBox.Show(string.Format("合并后的Excel文件扩展名必须为{0}", AppValues.EXCEL_FILE_EXTENSION), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // 检查要导出的后的Excel文件是否已存在且正被其他程序使用 if (Utils.GetFileState(mergedExcelSavePath) == FileState.IsOpen) { MessageBox.Show("要覆盖的合并后的Excel文件正被其他程序打开,请关闭后重试", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // 检查是否指定了合法的翻译完的Excel文件 string translatedExcelPath = txtTranslatedExcelPath.Text.Trim(); if (string.IsNullOrEmpty(translatedExcelPath)) { MessageBox.Show("必须输入翻译完的Excel文件所在路径", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } FileState fileState = Utils.GetFileState(translatedExcelPath); if (fileState == FileState.Inexist) { MessageBox.Show("输入的翻译完的Excel文件所在路径不存在,建议点击\"选择\"按钮进行文件选择", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (!AppValues.EXCEL_FILE_EXTENSION.Equals(Path.GetExtension(translatedExcelPath), StringComparison.CurrentCultureIgnoreCase)) { MessageBox.Show(string.Format("本工具仅支持读取扩展名为{0}的Excel文件", AppValues.EXCEL_FILE_EXTENSION), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (fileState == FileState.IsOpen) { MessageBox.Show("指定的翻译完的Excel文件正被其他软件打开,请关闭后重试", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // 检查选择的翻译完的Excel文件和新版母表不能为同一个文件 string translatedExcelFileFullPath = Path.GetFullPath(translatedExcelPath); if (translatedExcelFileFullPath.Equals(AppValues.ExcelFullPath)) { MessageBox.Show("你选择的翻译完的Excel文件和新版母表是同一个文件", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // 解析翻译完的Excel文件 string errorString = null; LangExcelInfo translatedExcelInfo = AnalyzeHelper.AnalyzeLangExcelFile(translatedExcelPath, AppValues.CommentLineStartChar, out errorString); if (errorString != null) { MessageBox.Show(string.Format("选定的翻译完后的Excel文件存在以下错误,请修正后重试\n\n{0}", errorString), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // 检查翻译完的Excel文件与新版母表的主语言名称是否相同 string excelDefaultLanguageName = AppValues.LangExcelInfo.DefaultLanguageInfo.Name; string translatedExcelDefaultLanguageName = translatedExcelInfo.DefaultLanguageInfo.Name; if (!excelDefaultLanguageName.Equals(translatedExcelDefaultLanguageName)) { MessageBox.Show(string.Format("翻译完的Excel文件与新版母表的主语言名称不同,无法进行对比,请统一后重试\n新版母表中主语言名称:{0},翻译完的Excel文件中主语言名称:{1}", excelDefaultLanguageName, translatedExcelDefaultLanguageName), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // 记录翻译完的Excel文件中存在的外语名 List <string> translatedExcelFileOtherLanguageNames = new List <string>(); // 检查翻译完的Excel文件中的外语在新版母表中是否都存在 List <string> inexistentOtherLanguageName = new List <string>(); foreach (string otherLanguageName in translatedExcelInfo.OtherLanguageInfo.Keys) { if (!AppValues.LangExcelInfo.OtherLanguageInfo.ContainsKey(otherLanguageName)) { inexistentOtherLanguageName.Add(otherLanguageName); } translatedExcelFileOtherLanguageNames.Add(otherLanguageName); } if (inexistentOtherLanguageName.Count > 0) { MessageBox.Show(string.Format("翻译完后的Excel文件中存在以下新版母表中不存在的外语名,无法进行合并\n{0}", Utils.CombineString <string>(inexistentOtherLanguageName, ",")), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // 检查完毕执行合并功能并生成合并结果报告文件(保存路径与合并后的Excel文件相同) string reportExcelSavePath = Utils.CombinePath(Path.GetDirectoryName(mergedExcelSavePath), string.Format("合并报告 {0:yyyy年MM月dd日 HH时mm分ss秒}.xlsx", DateTime.Now)); ExportExcelFileHelper.ExportMergedExcelFile(mergedExcelSavePath, reportExcelSavePath, AppValues.LangExcelInfo, translatedExcelInfo, translatedExcelFileOtherLanguageNames, out errorString); if (errorString == null) { DialogResult dialogResult = MessageBox.Show(string.Format("合并操作成功\n合并后的Excel文件存储路径为{0}\n报告文件存储路径为{1}\n\n点击“确定”按钮后将自动打开此报告文件", mergedExcelSavePath, reportExcelSavePath), "恭喜", MessageBoxButtons.OK, MessageBoxIcon.Information); if (dialogResult == DialogResult.OK) { System.Diagnostics.Process.Start(reportExcelSavePath); } } else { errorString = string.Concat("合并操作失败:", errorString); MessageBox.Show(errorString, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
// 点击“打开旧版母表”按钮 private void btnOpenOldExcelFile_Click(object sender, EventArgs e) { string excelFilePath = txtOldExcelPath.Text.Trim(); if (string.IsNullOrEmpty(excelFilePath)) { MessageBox.Show("请先输入或选择与新版母表对比的旧版国际化Excel母表所在路径", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } FileState fileState = Utils.GetFileState(excelFilePath); if (fileState == FileState.Inexist) { MessageBox.Show("输入的旧版国际化Excel母表所在路径不存在,建议点击\"选择\"按钮进行文件选择", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (!AppValues.EXCEL_FILE_EXTENSION.Equals(Path.GetExtension(excelFilePath), StringComparison.CurrentCultureIgnoreCase)) { MessageBox.Show(string.Format("本工具仅支持读取扩展名为{0}的Excel文件", AppValues.EXCEL_FILE_EXTENSION), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (fileState == FileState.IsOpen) { MessageBox.Show("该Excel文件正被其他软件打开,请关闭后重试", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // 检查选择的旧表和新表不能为同一个文件 string oldExcelFileFullPath = Path.GetFullPath(excelFilePath); if (oldExcelFileFullPath.Equals(AppValues.ExcelFullPath)) { MessageBox.Show("你选择的旧表和新表是同一个文件", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // 解析旧版Excel母表 string errorString = null; LangExcelInfo langExcelInfo = AnalyzeHelper.AnalyzeLangExcelFile(excelFilePath, AppValues.CommentLineStartChar, out errorString); if (errorString == null) { // 检查新旧母表的主语言名称是否相同 string excelDefaultLanguageName = AppValues.LangExcelInfo.DefaultLanguageInfo.Name; string oldExcelDefaultLanguageName = langExcelInfo.DefaultLanguageInfo.Name; if (!excelDefaultLanguageName.Equals(oldExcelDefaultLanguageName)) { MessageBox.Show(string.Format("新旧母表主语言名称不同,无法进行对比,请统一后重试\n新版母表中主语言名称:{0},旧版中主语言名称:{1}", excelDefaultLanguageName, oldExcelDefaultLanguageName), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // 检查新旧母表的所有外语名称是否相同 bool isMatchOtherLanguageInfo = true; if (AppValues.LangExcelInfo.OtherLanguageInfo.Count == langExcelInfo.OtherLanguageInfo.Count) { foreach (var item in AppValues.LangExcelInfo.OtherLanguageInfo) { if (!langExcelInfo.OtherLanguageInfo.ContainsKey(item.Key)) { isMatchOtherLanguageInfo = false; break; } } } else { isMatchOtherLanguageInfo = false; } if (isMatchOtherLanguageInfo == false) { MessageBox.Show("新旧母表的所有外语种类个数或者名称不完全匹配,无法进行对比", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } AppValues.OldLangExcelInfo = langExcelInfo; // 设置了合法的旧版Excel母表后,可以使用对比功能下属的各个子模块功能 _ChangeStateWhenSetOldExcelPath(true); } else { MessageBox.Show(string.Format("选定的旧版Excel母表存在以下错误,请修正后重试\n\n{0}", errorString), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } }