从Excel中选择匹配数据 并根据数据移动相应文件
2012-07-30 15:16
323 查看
总表
粗单
粗单详细
实现思路是
1.获取总表中的代理商名称和客户名称
2.根据获取的代理商名称创建代理商文件夹
3.提取粗单中的账户名称 和粗单的文件路径
4.根据粗单的账户名称和总表的客户名称对比 如果一致就移动到相应的代理商文件下
代码如下
粗单
粗单详细
实现思路是
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) 4000 { 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()); } } } } } }
相关文章推荐
- datagrid数据导出到excel文件给客户端下载的几种方法 选择自 yangyifan0 的 Blog
- 根据关键字选出excel中匹配的数据
- Excel(13)-数据选择、移动、复制粘贴的技巧
- Excel开发学习笔记:文件选择控件、查找匹配项、单元格格式及数据有效性
- 根据excel的文件的路径提取其中表的数据到DataSet中 .
- 如何让VS根据编译环境选择相应的配置文件
- 根据xlsx模板生成excel数据文件发送邮件代码
- 根据关键字选出excel中匹配的数据
- mysql 的 find_in_set函数使用方法,【根据用户选择的文章分类类型去匹配文章数据】
- winform 中 将listview数据 以excel格式导出 保存在可选择的文件夹下 但文件打开的时候有问题
- 如何让VS根据编译环境选择相应的配置文件
- 根据关键字选出excel中匹配的数据
- C#调用本地动态链接库时,根据x86或x64自动选择相应的动态链接库dll文件
- 如何让VS根据编译环境选择相应的配置文件
- 根据EXCEL文件各数据表结构定义中创建ER图实体对象
- 在数据表中字段存有excel、word文件数据,让其随着记录指针移动而改变显示
- C# WPF 进度条,根据读取数据显示进度条进度,根据Excel文件读取数据,进度条样式
- 根据excel的文件的路径提取其中表的数据到DataSet中
- 根据excel的文件的路径提取其中表的数据到DataSet中
- python 在excel文件中写入date日期数据,以及读取excel日期数据,如何在python中正确显示date日期。