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]