从Excel中选择匹配数据 并根据数据移动相应文件

总表


粗单 


粗单详细



实现思路是

1.获取总表中的代理商名称和客户名称

2.根据获取的代理商名称创建代理商文件夹

3.提取粗单中的账户名称 和粗单的文件路径

4.根据粗单的账户名称和总表的客户名称对比 如果一致就移动到相应的代理商文件下

代码如下


  ArrayList dailishang = new ArrayList();//存储代理商名称
        ArrayList kehu = new ArrayList();//存储客户名称
        ArrayList kname = new ArrayList();//存粗单中的客户名称
        ArrayList kurl = new ArrayList();//存粗单的文件路径
        private void button1_Click(object sender, EventArgs e)
        {

            openFileDialog1.ShowDialog();
            textBox1.Text = openFileDialog1.FileName.ToString();//把总表的路径赋值给文本框
            DataTable table = ExcelHelper.ImportExceltoDt(textBox1.Text.ToString());//把路径给Excel处理方法
            dataGridView1.DataSource = table;//绑定grid


            //1.获取主表中的客户名称和代理商名称
            #region

            for (int i = 0; i < table.Columns.Count; i++)
            {
                if (table.Columns[i].ToString() == "代理商")
                {
                    for (int q = 0; q < table.Rows.Count; q++)
                    {
                        if ((table.Rows[q][i].ToString() != ""))
                        {
                            dailishang.Add(table.Rows[q][i].ToString());//把代理商这一列的所有数据存储到arraylist中

                        }

                    }
                }
                if (table.Columns[i].ToString() == "客户名称")
                {
                    for (int q = 0; q < table.Rows.Count; q++)
                    {
                        if ((table.Rows[q][i].ToString() != ""))
                        {
                            kehu.Add(table.Rows[q][i].ToString());//把客户这一列的所有数据存储到arraylist中
                        }
                    }
                }

            }
            #endregion
            //2.创建文件夹
            #region
            if (File.Exists((@"C:\代理商列表")))//如果C盘存在这个文件夹 就删除
            {
                File.Delete((@"C:\代理商列表"));
            }
            else
            {
                Directory.CreateDirectory(@"C:\代理商列表");//如果不存在则创建
            }

            for (int i = 0; i < dailishang.Count; i++)
            {
                if (!File.Exists(@"C:\代理商列表\" + dailishang[i].ToString()))//如果C盘不存在这个文件夹 则创建
                {
                    Directory.CreateDirectory(@"C:\代理商列表\" + dailishang[i].ToString());
                }
            }
            MessageBox.Show("文件夹创建成功!");
            #endregion
            //3提取出粗单中的客户名称和文件路径

            #region
            string[] strFiles = Directory.GetFiles(textBox2.Text);//把粗单路径存入数据
            foreach (string aname in strFiles)
            {
                kurl.Add(aname);//把粗单路径循环存储在list中
                DataTable tables = new DataTable();
                dataGridView1.DataSource = OpenCSVFile(tables, aname);//粗单是csv文件 把文件路径给到csv处理方法然后绑定到grid中
                //账户名称
                for (int i = 0; i < tables.Columns.Count; i++)
                {
                    for (int s = 0; s < tables.Rows.Count; s++)
                    {
                        if (tables.Rows[s][i].ToString() == "账户名称")
                        {
                            kname.Add(tables.Rows[s][i + 1].ToString());
                        }
                    }
                }
            }
            #endregion

            //4根据粗单客户名称 对比总表客户名称 如一致 则把粗单移动到C盘相应的代理商名下
            #region
            for (int i = 0; i < kname.Count; i++)
            {
                for (int s = 0; s < kehu.Count; s++)
                {
                    if (kname[i].ToString() == kehu[s].ToString())
                    {
                        string q = kurl[i].ToString();
                        string[] w = q.Split('\\');
                        ArrayList liste = new ArrayList();
                        foreach (string t in w)
                        {

                            liste.Add(t.ToString());
                        }
                        int r = liste.Count - 1;
                        if (File.Exists(kurl[i].ToString()))
                        {

                            //                           if (!File.Exists(@"C:\代理商列表\" + dailishang[s].ToString() + @"\" + liste[r].ToString())) 
                            //                             {
                            //                            //  File.Delete(@"C:\代理商列表\" + dailishang[s].ToString() + @"\" + liste[r].ToString());
                            //                                 File.Copy(kurl[i].ToString(), @"C:\代理商列表\" + dailishang[s].ToString() + @"\" + liste[r].ToString());
                            //                           }
                            // File.Copy(kurl[i].ToString(), @"C:\代理商列表\" + dailishang[s].ToString() + @"\" + liste[r].ToString());
                            File.Copy(kurl[i].ToString(), @"C:\代理商列表\" + dailishang[s].ToString() + @"\" + (s + 1) + "_" + liste[r].ToString());
                            File.Delete(kurl[i].ToString());
                            //   File.Copy(kurl[i].ToString(), @"C:\代理商列表\" + dailishang[s].ToString() + @"\" + (s+1).ToString()+".csv");
                            //  File.Move(kurl[i].ToString(), @"C:\代理商列表\" + dailishang[s].ToString() + @"\" + liste[r].ToString());
                        }


                    }
                }
            }
            MessageBox.Show("粗单已分完");
            #endregion
        }

   /// <summary>
        /// 操作csv文件
        /// </summary>
        /// <param name="mycsvdt">datatable </param>
        /// <param name="filepath">路径</param>
        /// <returns></returns>
        private DataTable OpenCSVFile(DataTable mycsvdt, string filepath)
        {
            string strpath = filepath; //csv文件的路径
            try
            {
                int intColCount = 0;
                bool blnFlag = true;

                DataColumn mydc;
                DataRow mydr;

                string strline;
                string[] aryline;
                StreamReader mysr = new StreamReader(strpath, System.Text.Encoding.Default);

                while ((strline = mysr.ReadLine()) != null)
                {
                    aryline = strline.Split(new char[] { ',' });
                    //给datatable加上列名
                    if (blnFlag)
                    {
                        blnFlag = false;
                        intColCount = aryline.Length;
                        int col = 0;
                        for (int i = 0; i < aryline.Length; i++)
                        {
                            col = i + 1;
                            mydc = new DataColumn(col.ToString());
                            mycsvdt.Columns.Add(mydc);
                        }
                    }
                    //填充数据并加入到datatable中
                    mydr = mycsvdt.NewRow();
                    for (int i = 0; i < intColCount; i++)
                    {
                        mydr[i] = aryline[i];
                    }
                    mycsvdt.Rows.Add(mydr);
                }
                return mycsvdt;

            }
            catch (Exception e)
            {


                //   throw (Stack.GetErrorStack(strpath+"读取CSV文件中的数据出错." + e.Message, "OpenCSVFile("));
                return mycsvdt;
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            ArrayList list = dailishang;
            ArrayList address = new ArrayList();
            //1.获取粗单的账户名称  4008 号码 代理商名称
            for (int i = 0; i < list.Count; i++)
            {
                for (int s = 0; s < list.Count; s++)
                {
                    if (list[i].ToString() == list[s].ToString()) 
                    {
                        list.Remove(i);
                    }
                }
            }
            for (int i = 0; i < list.Count; i++)
            {
                string[] strFiles = Directory.GetFileSystemEntries(@"C:\代理商列表\" + list[i].ToString()); 
                foreach (string aname in strFiles)
                {
                    address.Add(aname);//把粗单路径循环存储在list中
                    DataTable tables = new DataTable();
                    dataGridView1.DataSource = OpenCSVFile(tables, aname); 
                  
                    for (int r  = 0; r < tables.Columns.Count; r++)
                    {
                        for (int s = 0; s < tables.Rows.Count; s++)
                        {
                            if (tables.Rows[s][r].ToString() == "账户名称")
                            {
                                kname.Add(tables.Rows[s][i + 1].ToString());
                            }
                        }
                    }
                }

             
            }
          
           

        }




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值