Klient naszej wspaniałej firmy Netivo (http://netivo.pl/) chciał scalić 2 bazy emailowe tak, by emaile się nie powtarzały.
Napisałem zatem prosty programik który pozwoli to zrobić.
Mój program wczytuje plik .txt który ma po jednym adresie email w jednej linii i usuwa duplikujące się linie. Dodatkowo, sortuje je.
To bardzo prosty skrypcik, ale może się komuś przydać:
Kod głównej części:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Collections; namespace DupliKiler { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { OpenFileDialog fDialog = new OpenFileDialog(); fDialog.Title = "Open XML/UML File"; fDialog.Filter = "Pliki tekstowe|*.txt"; fDialog.InitialDirectory = @"C:"; if (fDialog.ShowDialog() == DialogResult.OK) { backgroundWorker1.RunWorkerAsync(fDialog.FileName.ToString()); } } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { Hashtable wBazie = new Hashtable(); int unikalnych = 0; int duplikatow = 0; //if ((string)e.Argument.EndsWith("txt")) //{ TextReader tr = new StreamReader((string)e.Argument); FileInfo t = new FileInfo((string)e.Argument + "_Dupli.txt"); StreamWriter Tex = t.CreateText(); string input = null; while ((input = tr.ReadLine()) != null) { if (!wBazie.Contains(input)) { wBazie.Add(input, 1); Tex.WriteLine(input); unikalnych++; //backgroundWorker1.ReportProgress(unikalnych); } else { duplikatow++; } } MessageBox.Show("Zanalizowano " + (unikalnych + duplikatow).ToString() + " wierszy. Unikalnych okazało się " + unikalnych + " a powtórzonych " + duplikatow + ". Plik wynikowy został zapisany w tym samym katalogu co źródłowy."); tr.Close(); Tex.Close(); //} //else if (fDialog.FileName.EndsWith("xls")) //{ // MessageBox.Show("XLS"); //} } } }
[adsense]