/// <summary> /// 点击查重清洗模块 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cbb_format3_SelectedIndexChanged(object sender, EventArgs e) { //获得格式信息,再规则信息设置中打勾 string formatName = cbb_format3.Text; FormatInfo myfi = new FormatInfo(formatName); myfi.GetFormatInfo(); SelectRules(myfi._formatSet, dgv_chachong); }
/// <summary> /// 切换内容解析模块下的格式名称时触发的事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cbb_format5_SelectedIndexChanged(object sender, EventArgs e) { //获得格式信息,再规则信息设置中打勾 string formatName = cbb_format5.Text; FormatInfo myfi = new FormatInfo(formatName); myfi.GetFormatInfo(); SelectRules(myfi._formatSet); //加载保存路径 tb_savepath5.Text = myfi._savePath; //加载路径选择框 cb_yuanwenjianjia5.Checked = myfi._yuanwenjianjia; cb_zhidingwenjianjia5.Checked = myfi._zhidingwenjianjia; }
/// <summary> /// 点击开始按钮时触发的事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void lbl_kaishi_Click(object sender, EventArgs e) { //修改程序状态为执行,刷新状态信息 lbl_zhuangtai.Text = "正在进行数据解析……"; lbl_kaishi.Enabled = false; lbl_kaishi.BackColor = Color.Gray; statue = 1; //获得文件夹下所有的文件名 for (int i = folderIndex; i < dgv_task.Rows.Count; i++) { folderIndex = i;//时刻记录当前程序执行到的文件夹位置 string folder = dgv_task.Rows[i].Cells[1].Value.ToString(); string[] files = Directory.GetFiles(folder); for (int k = fileIndex; k < files.Length; k++) { //计算百分率 double _processRate = 100 * Convert.ToDouble(k + 1) / Convert.ToDouble(files.Length); dgv_task.Rows[i].Cells[3].Value = $"{_processRate.ToString("00.00")}%"; Application.DoEvents(); //如果用户终止了或者暂停了程序,就跳出循环 if (statue == 0 || statue == 2) { return; } fileIndex = k;//时刻记录当前程序执行到的文件位置 string file = files[k]; #region 1、文件名格式标准化 /*1、开始文件名格式标准化*/ string path = Path.GetDirectoryName(file); string fileOriginal = Path.GetFileNameWithoutExtension(file); string extension = Path.GetExtension(file); string filename = string.Empty;//用于存放改后的文件名 //判断“文件名标准化”格式,如果不是“无”,则进行文件名格式标准化 if (!SystemInfo._userInfo._wjmbzh.Equals("无")) { //拆分出路径和文件名 ///拆分后的文件名集合,对list进行处理,如果是\d星,那么要和前一项合并 List <string> list = Regex.Split(fileOriginal, @"\.").ToList(); for (int j = 0; j < list.Count; j++) { if (Regex.IsMatch(list[j], @"\d星")) { list[j] = $"{list[j - 1] }.{list[j]}"; list.RemoveAt(j - 1); break; } } //获得文件名标准格式下的所有rule名称 FormatInfo fi = new FormatInfo(SystemInfo._userInfo._wjmbzh); fi.GetFormatInfo(); List <string> rules = Regex.Split(fi._formatSet, @"\|").ToList(); //对每一个rule循环,获得设置root foreach (string rule in rules) { RuleInfo myri = new RuleInfo(rule, "文件名标准化"); myri.GetRuleInfo(); WjmRuleRoot myroot = ((WjmRuleRoot)myri._root); //判断位置,得到操作目标,对每种可能的目标进行判断操作 if (myroot.position[0].Equals("整个文件名")) { //对操作目标进行操作 if (!myroot.delete.Trim().Equals(string.Empty)) { filename = Regex.Replace(fileOriginal, myroot.delete.Trim(), ""); } else if (!myroot.replace0.Trim().Equals(string.Empty)) { filename = Regex.Replace(fileOriginal, myroot.replace0.Trim(), myroot.replace); } } else if (myroot.position[0].Equals("文件名前")) { //新增内容 if (!myroot.newText.Trim().Equals(string.Empty)) { filename = $"{myroot.newText}{fileOriginal}"; } } else if (myroot.position[0].Equals("文件名后")) { //新增内容 if (!myroot.newText.Trim().Equals(string.Empty)) { filename = $"{fileOriginal}{myroot.newText}"; } } else if (Regex.IsMatch(myroot.position[0], @"文件名第\d项前")) { //获得数字,然后获得目标文本 int index = Convert.ToInt32(Regex.Match(myroot.position[0], @"\d").Value); string target = list[index - 1]; //新增内容 if (!myroot.newText.Trim().Equals(string.Empty)) { target = $"{myroot.newText.Trim()}{target}"; } list[index - 1] = target; filename = string.Join(".", list); } else if (Regex.IsMatch(myroot.position[0], @"文件名第\d项后")) { //获得数字,然后获得目标文本 int index = Convert.ToInt32(Regex.Match(myroot.position[0], @"\d").Value); string target = list[index - 1]; //新增内容 if (!myroot.newText.Trim().Equals(string.Empty)) { target = $"{target}{myroot.newText.Trim()}"; } list[index - 1] = target; filename = string.Join(".", list); } //给文件改名 File.Move($"{file}", $"{path}\\{filename}{extension}"); } } else//如果不进行文件名标准化,那么新得文件名和原先一样 { filename = fileOriginal; } string currentFilename = $"{path}\\{filename}{extension}"; #endregion #region 2、文档格式标准化 //判断“文档格式标准化”格式,如果用户不是选择了“无”,则执行文件格式标准化 if (!SystemInfo._userInfo._wjbzh.Equals("无")) { //获得标准化规则 FormatInfo _format = new FormatInfo(SystemInfo._userInfo._wjbzh); _format.GetFormatInfo(); string _rule = Regex.Split(_format._formatSet, @"\|")[0]; RuleInfo _ruleInfo = new RuleInfo(_rule, "格式标准化"); _ruleInfo.GetRuleInfo(); BzhRuleRoot _root = _ruleInfo._root as BzhRuleRoot; //调整文档格式,包括大标题,副标题,正文,一级标题,二级标题,三级标题,页边距, MyMethod.UpdateFormat2(currentFilename, _root); //文本标注,暂时 放一放 } #endregion #region 3、查重清洗 //判断用户选择的查重清洗格式,如果不等于,则进行查重清洗 if (!SystemInfo._userInfo._ccqx.Equals("无")) { } #endregion #region 4、基础解析 //判断用户选择的基础解析格式,如果不等于无,则进行基础解析 JJDocument _jjDoc = new JJDocument(currentFilename); if (!SystemInfo._userInfo._jcjx.Equals("无")) { var listbase = _jjDoc.GetBaseAnalysis(); _jjDoc.SaveList2Excel(listbase); } #endregion #region 5、内容解析 //判断用户选择的内容解析格式,如果不等于无,则进行内容解析 if (!SystemInfo._userInfo._nrjx.Equals("无")) { var listneirong = _jjDoc.GetNeirongAnalysis(); _jjDoc.SaveList2Excel(listneirong); } #endregion #region 6、大数据版 //判断用户选择的大数据版,如果不等于无,则进行大数据版 if (!SystemInfo._userInfo._dsjb.Equals("无")) { } #endregion } } //执行完成提示,完成并将系统状态还原为0 statue = 0; lbl_kaishi.Enabled = true; lbl_kaishi.ForeColor = Color.White; lbl_kaishi.BackColor = Color.MediumSeaGreen; lbl_zhuangtai.Text = "已就绪,请点击\"开始\"执行解析"; MessageBox.Show("本次数据处理已完成!"); }