DupliKiler

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]

Pobierz Duplikillera:

DupliKiler

Leave a Reply