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

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

1、EXCEL文件ID
在这里插入图片描述
2、生成的文件夹
在这里插入图片描述

 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;
 });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码猩

如果可以请支持我一下哟!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值