C# winform根据EXCEL匹配文件后将txt的图片分别下载到指定的文件夹里

C# winform根据EXCEL匹配文件后将txt的图片分别下载到指定的文件夹里

1、EXCEL文件ID

2、生成的文件夹

csharp 复制代码
 showinthz = showinthz + creatpath.Count;
 //string fNamestr = Path.GetFileNameWithoutExtension(path);
 //string[] sstr1 = fNamestr.Split('_');
 string directoryPath = Path.GetDirectoryName(input_Excel.Text);
 var filesData = new List<FileContent>();
 //处理并生成处理文件
 var processor = new ParallelFileProcessor();

 var tasks = new List<FolderTask>();


 List<string> strhttp = new List<string>();
 List<string> nostr = new List<string>();

 string[] allLines = File.ReadAllLines(filepath, Encoding.GetEncoding("GBK"));
 List<string> linesList = allLines.ToList();
 List<string> linesonrcout = new List<string>();
 //排除重复后再判断
 foreach (var line in linesList)
 {
     string specialPrefix = "&*&*&*&*";

     bool startsWithSpecialPrefix = line.StartsWith(specialPrefix);
     if (!startsWithSpecialPrefix)
     {

         bool isContained = linesonrcout.Contains(line);
         if (!isContained)
         {
             linesonrcout.Add(line);

         }

     }

 }
 allLines = linesonrcout.ToArray();
 if (allLines.Length < 3)
 {
     string pteh = Path.GetFileName(filepath);
     string[] ssrt = pteh.Split('_');

     var row = new DataGridViewRow();
     row.CreateCells(dgvdata_Err_show);
     row.Cells[0].Value = showintkk;
     showintkk++;
     row.Cells[1].Value = ssrt[0];
     row.Cells[2].Value = allLines.Length;


     await Task.Run(() =>
     {
         this.dgvdata_Err_show.BeginInvoke((MethodInvoker)delegate
         {
             dgvdata_Err_show.Rows.Add(row);
         });
     });



     //string pteh = Path.GetFileName(filepath);
     //string[] ssrt = pteh.Split('_');
     //加入视图看


     //Show_Err_list.Items.Add(ssrt[0] + "---行数:" + allLines.Length.ToString());
 }
 foreach (string line in allLines)
 {
     string specialPrefix = "&*&*&*&*";

     bool startsWithSpecialPrefix = line.StartsWith(specialPrefix);
     if (!startsWithSpecialPrefix)
     {
         string pattern = "http";
         Regex regex = new Regex(pattern);
         Match match = regex.Match(line);
         if (match.Success)
         {
             if (!strhttp.Contains(line))
             {
                 strhttp.Add(line);//待随机的有效链接队列
             }
         }
         else
         {
             if (!nostr.Contains(line))
             {
                 nostr.Add(line);//待随机的无链接的队列
             }
         }
     }

 } //按顺序分别把带连接的和不带链接的放进去list

 List<string> sshucun = new List<string>();//存放最后一次http乱序的结果
 List<string> sshucunt1 = new List<string>();//存放不是http最后一次乱序的连接
 int cc = 0;
 int wenjian = 1;
 foreach (string creatname in creatpath)
 {
     jinduadd++;
     //创建文件夹并乱序
     string Fname = directoryPath + "\\" + "生成的文件\\" + creatname;
     if (!Directory.Exists(Fname))
     {
         Directory.CreateDirectory(Fname);
     }
     var shuffler = new ConditionalShuffler();
     try
     {
         if (cc == 0)
         {

             #region 处理第一次连接的数组
             if (strhttp.Count > 2)
             {

                 var shuffled = shuffler.ShuffleWithCondition(strhttp);
                 sshucun = shuffled;
             }
             else
             {
                 sshucun = strhttp;
             }
             foreach (string s in sshucun)
             {
                 if (!string.IsNullOrEmpty(s))
                 {

                     string wenjianname = Fname + "\\" + wenjian;
                     if (!Directory.Exists(wenjianname))
                     {
                         Directory.CreateDirectory(wenjianname);
                         string specialPrefix1 = "&*&*&*&*";

                         bool startsWithSpecialPrefix1 = s.StartsWith(specialPrefix1);
                         if (!startsWithSpecialPrefix1)
                         {
                             FolderTask tts = new FolderTask();
                             //tasks.Add(new FolderTask { TargetPath = wenjianname, Contentxt = PingJia, });
                             var matches = Regex.Matches(s, @"&*\*&*\*&*\*&*\*(.*?)&*\*&*\*&*\*&*\*");
                             string[] pjstr = s.Split(new[] { "&*&*&*&*" }, StringSplitOptions.RemoveEmptyEntries);
                             if (pjstr.Length >= 1)
                             {
                                 string PingJia = pjstr[0].ToString();//评价
                                 string filePath = wenjianname + "\\" + "评价.txt";
                                 //SafeWriteFile(filePath, PingJia);
                                 //await Task.Run(() => { File.WriteAllText(filePath, PingJia, Encoding.UTF8); });
                                 tts.TargetPath = wenjianname;
                                 tts.Contentxt = PingJia;
                                 //File.WriteAllText(filePath, PingJia, Encoding.UTF8);
                             };

                             int imcout = 1;
                             int imgname = 1;
                             foreach (Match match in matches)
                             {
                                 string kk = match.ToString();
                                 string pattern = "----";
                                 Regex regex1 = new Regex(pattern);
                                 Match match1 = regex1.Match(kk);
                                 if (match1.Success)
                                 {

                                     var urls = match.Groups[1].Value.Split(new[] { "----" }, StringSplitOptions.RemoveEmptyEntries);
                                     //var converter = new ImageDownloader();

                                     foreach (var item in urls)
                                     {
                                         if (item.Trim() != "")
                                         {
                                             string imnamepath = wenjianname + "\\" + imgname + ".jpg";
                                             listtupian.Add(item);
                                             tts.ImageUrls.Add(item);
                                             tts.ImageUrlspath.Add(imnamepath);
                                             //await converter.DownloadImageAsync(item, imnamepath, _httpClient);
                                             imgname++;
                                         }

                                     }
                                 }
                                 else
                                 {
                                     var urls = match.Groups[1].Value.Split(new[] { "" }, StringSplitOptions.RemoveEmptyEntries);
                                     //var converter = new ImageDownloader();

                                     foreach (var item in urls)
                                     {
                                         if (item.Trim() != "")
                                         {
                                             string imnamepath = wenjianname + "\\" + imgname + ".jpg";
                                             listtupian.Add(item);
                                             tts.ImageUrls.Add(item);
                                             tts.ImageUrlspath.Add(imnamepath);
                                             //await converter.DownloadImageAsync(item, imnamepath, _httpClient);
                                             imgname++;
                                         }

                                     }

                                 }
                                 imcout++;
                             }
                             tasks.Add(tts);

                         }
                     }
                 }
                 wenjian++;
             }

             #endregion

             #region 处理没有链接的数组
             if (nostr.Count > 2)
             {
                 var shuffled2 = shuffler.ShuffleWithCondition(nostr);
                 sshucunt1 = shuffled2;
             }
             else
             {
                 sshucunt1 = nostr;
             }

             //处理不带http的
             foreach (string ss in sshucunt1)
             {
                 if (!string.IsNullOrEmpty(ss))
                 {
                     string wenjianname = Fname + "\\" + wenjian;
                     if (!Directory.Exists(wenjianname))
                     {
                         Directory.CreateDirectory(wenjianname);
                         string specialPrefix2 = "&*&*&*&*";

                         bool startsWithSpecialPrefix2 = ss.StartsWith(specialPrefix2);
                         if (!startsWithSpecialPrefix2)
                         {
                             FolderTask tts = new FolderTask();

                             var matches = Regex.Matches(ss, @"&*\*&*\*&*\*&*\*(.*?)&*\*&*\*&*\*&*\*");
                             string[] pjstr = ss.Split(new[] { "&*&*&*&*" }, StringSplitOptions.RemoveEmptyEntries);
                             if (pjstr.Length >= 1)
                             {
                                 string PingJia = pjstr[0].ToString();//评价
                                 string filePath = wenjianname + "\\" + "评价.txt";

                                 tts.TargetPath = wenjianname;
                                 tts.Contentxt = PingJia;
                                 //SafeWriteFile(filePath, PingJia);
                                 //await Task.Run(() => { File.WriteAllText(filePath, PingJia, Encoding.UTF8); });
                                 //File.WriteAllText(filePath, PingJia, Encoding.UTF8);
                             };

                             tasks.Add(tts);


                         }

                     }
                 }
                 wenjian++;
             }
             #endregion
             cc = 1;
         }
         else
         {
             wenjian = 1;
             //处理二次集合的连接数据
             if (sshucun.Count > 2)
             {
                 var shuffled = shuffler.ShuffleWithCondition(sshucun);
                 sshucun = shuffled;

             }
             foreach (string s in sshucun)
             {
                 if (!string.IsNullOrEmpty(s))
                 {

                     string wenjianname = Fname + "\\" + wenjian;
                     if (!Directory.Exists(wenjianname))
                     {
                         Directory.CreateDirectory(wenjianname);
                         string specialPrefix1 = "&*&*&*&*";

                         bool startsWithSpecialPrefix1 = s.StartsWith(specialPrefix1);
                         if (!startsWithSpecialPrefix1)
                         {
                             FolderTask tts = new FolderTask();
                             var matches = Regex.Matches(s, @"&*\*&*\*&*\*&*\*(.*?)&*\*&*\*&*\*&*\*");
                             string[] pjstr = s.Split(new[] { "&*&*&*&*" }, StringSplitOptions.RemoveEmptyEntries);
                             if (pjstr.Length >= 1)
                             {
                                 string PingJia = pjstr[0].ToString();//评价
                                 string filePath = wenjianname + "\\" + "评价.txt";
                                 tts.TargetPath = wenjianname;
                                 tts.Contentxt = PingJia;
                                 //SafeWriteFile(filePath, PingJia);
                                 //await Task.Run(() => { File.WriteAllText(filePath, PingJia, Encoding.UTF8); });
                                 //File.WriteAllText(filePath, PingJia, Encoding.UTF8);
                             };

                             int imcout = 1;
                             int imgname = 1;
                             foreach (Match match in matches)
                             {
                                 string kk = match.ToString();
                                 string pattern = "----";
                                 Regex regex1 = new Regex(pattern);
                                 Match match1 = regex1.Match(kk);
                                 if (match1.Success)
                                 {

                                     var urls = match.Groups[1].Value.Split(new[] { "----" }, StringSplitOptions.RemoveEmptyEntries);
                                     var converter = new ImageDownloader();


                                     foreach (var item in urls)
                                     {
                                         string imnamepath = wenjianname + "\\" + imgname + ".jpg";
                                         listtupian.Add(item);
                                         tts.ImageUrls.Add(item);
                                         tts.ImageUrlspath.Add(imnamepath);
                                         //await converter.DownloadImageAsync(item, imnamepath, _httpClient);
                                         imgname++;
                                     }
                                 }
                                 else
                                 {
                                     var urls = match.Groups[1].Value.Split(new[] { "" }, StringSplitOptions.RemoveEmptyEntries);
                                     var converter = new ImageDownloader();

                                     foreach (var item in urls)
                                     {
                                         string imnamepath = wenjianname + "\\" + imgname + ".jpg";
                                         listtupian.Add(item);
                                         tts.ImageUrls.Add(item);
                                         tts.ImageUrlspath.Add(imnamepath);
                                         //await converter.DownloadImageAsync(item, imnamepath, _httpClient);
                                         imgname++;
                                     }

                                 }
                                 imcout++;
                             }
                             tasks.Add(tts);
                         }

                     }
                 }
                 wenjian++;
             }



             //处理二次集合没有链接的数据
             if (sshucunt1.Count > 2)
             {

                 var shuffled2 = shuffler.ShuffleWithCondition(sshucunt1);
                 sshucunt1 = shuffled2;
             }
             //处理不带http的
             foreach (string ss in sshucunt1)
             {
                 if (!string.IsNullOrEmpty(ss))
                 {
                     string wenjianname = Fname + "\\" + wenjian;
                     if (!Directory.Exists(wenjianname))
                     {
                         Directory.CreateDirectory(wenjianname);
                         string specialPrefix2 = "&*&*&*&*";

                         bool startsWithSpecialPrefix2 = ss.StartsWith(specialPrefix2);
                         if (!startsWithSpecialPrefix2)
                         {
                             FolderTask tts = new FolderTask();

                             var matches = Regex.Matches(ss, @"&*\*&*\*&*\*&*\*(.*?)&*\*&*\*&*\*&*\*");
                             string[] pjstr = ss.Split(new[] { "&*&*&*&*" }, StringSplitOptions.RemoveEmptyEntries);
                             if (pjstr.Length >= 1)
                             {
                                 string PingJia = pjstr[0].ToString();//评价
                                 string filePath = wenjianname + "\\" + "评价.txt";
                                 tts.TargetPath = wenjianname;
                                 tts.Contentxt = PingJia;
                                 //SafeWriteFile(filePath, PingJia);
                                 //await Task.Run(() => { File.WriteAllText(filePath, PingJia, Encoding.UTF8); });
                                 //File.WriteAllText(filePath, PingJia, Encoding.UTF8);
                             };

                             tasks.Add(tts);

                         }

                     }
                 }
                 wenjian++;
             }

         }
         await processor.ProcessFoldersAsync(tasks);


         //MessageBox.Show("已完成!");
         //btn_Creat.Enabled = true;

     }
     catch (Exception)
     {

         throw;
     }

 }
 //lbl_showlbl;

 this.lbl_showlbl.BeginInvoke((MethodInvoker)async delegate
 {
     lbl_showlbl.Text = "生成进度:" + jinduadd + "/" + showinthz;
 });
相关推荐
互联网搬砖老肖4 分钟前
python成功解决AttributeError: can‘t set attribute ‘lines‘
开发语言·python
张立龙66621 分钟前
有序二叉树各种操作实现(数据结构C语言多文件编写)
c语言·开发语言·数据结构
2401_8454174522 分钟前
C++ string类
java·开发语言·c++
23zhgjx-ctl26 分钟前
Isis-路由引入
开发语言·php
一瞬祈望31 分钟前
从零开始:Python运行环境之VSCode与Anaconda安装配置全攻略 (1)
开发语言·vscode·python
wuqingshun31415941 分钟前
经典算法 判断一个图中是否有环
java·开发语言·数据结构·c++·算法·蓝桥杯·深度优先
神仙别闹1 小时前
基于JSP+MySQL实现用户注册登录及短信发送功能
java·开发语言·mysql
邪恶的贝利亚1 小时前
C++ 基础深入剖析:编译、内存与面向对象编程要点解析
开发语言·c++
陳長生.1 小时前
JAVA EE_初始网络原理
java·开发语言·网络·java-ee
T - mars1 小时前
常见的爬虫算法
开发语言·javascript·ecmascript