您的位置:首页 > 其它

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

2012-07-30 15:16 323 查看
总表



粗单 



粗单详细





实现思路是

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

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐