Здрасте всем.
Есть два файла,один excel у второго расширение *.cad(это текстовый фаил).
Вобщем нужно сравнить из этих двух файлов только две вещи(Place,TapeNumber),и нужно показать отчёт неважно в каком формате(word,excel,txt,pdf),нужно показать что совпало и где несовпало.
Подскажите как это можно зделать.
Спасибо. http://files.rsdn.ru/79472/test.rar
Я сомневаюсь, что есть готовые программы для этого.
Если тебе извесен формат обоих файлов, то пиши свой компарер и пиши "отчёт неважно в каком формате"
Здравствуйте, nik1, Вы писали:
N>Подскажите как это можно зделать.
имхо, лучше разбить эту задачу на подзадачи:
1. чтение экселя и загрузка данных в список №1
2. чтение cad-файла и загрузка данных в список №2
3. сортировка и сравнение списков №1 и №2
и далее разбираться с каждым шагом отдельно. для меня наиболее затруднительно было бы читать эксель файл — не лучше ли его сначала конвертить в xml версию?
кстати, если файлы очень большие, то лучше:
1. чтение экселя и составление файла со списком №1
2. дисковая сортировка списка №1
3. чтение cad-файла и составление файла со списком №2
4. дисковая сортировка списка №2
5. сравнение файлов со списками №1 и №2
если лень заморачиваться с дисковой сортировкой, то можно использовать БД, тот же access или ms sql express.
Спасибо большое всем.Извените раньше немог ответить.А может проще будет считать только две колонки из .cad файла и две нужные колонки из excel и затем их сравнить.Только вот мне в этом нужна помощь,я ещё несовсем понимаю как это зделать.Вот попытался зделать сравнение просто двух файлов,вроде бы работает.А вот как дальше ???.Помогите.
Большое всем спасибо.
private string fileName = string.Empty;
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
fileName = openFileDialog1.FileName;
if(sender == this.button1)
{
label1.Text = Path.GetFileName(fileName);
LoadListView(listView1);
}
else
{
label2.Text = Path.GetFileName(fileName);
LoadListView(listView2);
}
}
}
private void LoadListView(ListView lv)
{
TextReader tr = new StreamReader(fileName);
string input = null;
while ((input = tr.ReadLine()) != null)
lv.Items.Add(input);
}
private void btnCompare_Click(object sender, EventArgs e)
{
// comparison based on the first listbox
// missing lines will be red, added lines to the second listbox will be greenforeach(ListViewItem lvi in listView1.Items)
{
if (!CheckItemExists(lvi, listView1))
{
lvi.ForeColor = Color.Red;
}
}
foreach (ListViewItem lvi in listView2.Items)
{
if (CheckItemExists(lvi, listView1) == false)
{
lvi.ForeColor = Color.Green;
}
}
}
private bool CheckItemExists(ListViewItem lvi, ListView lv)
{
bool itemExists = false;
foreach (ListViewItem li in lv.Items)
{
if (li.Text == lvi.Text)
{
itemExists = true;
break;
}
}
return itemExists;
}
Здравствуйте, nik1, Вы писали:
N>А вот как дальше ???.Помогите.
ну это больше всего похоже на шаг №3
1. чтение экселя и загрузка данных в список №1
2. чтение cad-файла и загрузка данных в список №2
3. сортировка и сравнение списков №1 и №2
только без сортировки — нравятся видимо вам длительные процессы, ну да ладно — файлы видать маленькие.
ну теперь приступайте к первому и второму шагам. потом немного перепишете третий шаг и всё будет работать. только попробуйте всё-таки делать это через свои классы, а не через колонки ListView — а то это будет ужасно выглядеть.
всю ночь не ем, весь день не сплю — устаю
Re[4]: Compare 2 files
От:
Аноним
Дата:
18.06.09 20:54
Оценка:
Neco спасибо большое.Помогите с кодом если незатруднит,а то я незнаю как это делается.
Спасибо огромное.
А>Neco спасибо большое.Помогите с кодом если незатруднит,а то я незнаю как это делается.
не, с кодом придётся самому повозиться.
одно дело спрашивать "как правильно копать?" и совсем другое "покопай за меня".