Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Как сравнить два файла


Автор: Sharki 8.6.2009, 16:55
Здрасте всем.
Есть два файла,один excel у второго расширение *.cad(это текстовый фаил).
Вобщем нужно сравнить из этих двух файлов только две вещи(Place,TapeNumber),и нужно показать отчёт неважно в каком формате(word,excel,txt,pdf),нужно показать что совпало и где несовпало.
Подскажите как это можно сделать.
Спасибо.

Автор: Sharki 9.6.2009, 09:32
Ну хоть подкиньте идейку как делать.
Спасибо.

Автор: Sharki 9.6.2009, 18:41
?????

Автор: Sharki 10.6.2009, 21:46
???

Автор: jonie 10.6.2009, 23:15
Вы программист или кто?!
Если нет, то:
для начала приведи все к одноми виду. например экселю. 
Эксель - данные - импортировать, файл R31_C.CAD
На полученный лист скопируйте данные из SA_JZ10_R31_REV_C01_BOM.xls.

Далее идете в макросы и пишите там такой макрос:
Код

Option Explicit
Sub Макрос1()
    
    
    Dim i As Long
    For i = 1 To 1000
    
        Sheets("Лист1").Select  'лист с CAD
        Dim place1 As String
        place1 = Range("D" & i).Value 'это типа place из cad файла
        
        If Len(place1) = 0 Then
            Exit For
        End If
        
        Sheets("Лист2").Select  'лист с xls
        Dim j As Long
        For j = 1 To 1000
            Dim place2 As String
            place2 = Range("L" & j).Value 'это типа place из xls файла
            If Len(place2) = 0 Then
                Exit For
            End If
            
            If place1 = place2 Then
                 Sheets("Лист1").Select  'лист с CAD
                 Range("K" & i).Value = 1         'а это будет признак что совпали
                 Exit For
            End If
        Next j
    Next i
   
End Sub

Исполняете скрипт.

после чего открываете первый лист, и выьираете его весь. Давите Данные-Фильтр-Автофильтр. В стобце K выбираете условие равности 1-ке. Все, получили список совпадающих по place. Ну и для TapeNumber чуть поправите скрипт.


Автор: Sharki 11.6.2009, 08:45
jonie спасибо большое за вариант,но я совсем зелёный,мне бы всё это только на шарпе написать.
Спасибо огромное.

Автор: Sharki 11.6.2009, 21:04
 smile  smile  smile 

Автор: jonie 11.6.2009, 22:37
ну так изучайте шарп, в чем проблема? Что у вас не получается?! Если вы не хотите изучать ничего - тогда идите в раздел найма специалистов и платите $ за работу.

Автор: Sharki 14.6.2009, 06:56
jonie  Спасибо за помощь.

Автор: Sharki 16.6.2009, 22:22
Добрый вечер.
А может кто подскажет как можно прочитать не весь (txt file) а определённые колонки.Например если фаил выглядит так:

Код

-3.18     71.45       0         FID         utr_ssssss_s
-93.73    71.17      0         FID           utr_ssssss_s
-95.00    2.59        0         FID           utr_ssssss_s
-51.44     59.06     180     U201        utr_103301659_s
-34.29     59.06     180     U300        utr_104306105_s
-92.46     42.60      90      R106        utr_112815046_s


то надо прочитать последние две колонки.
Спасибо.

Автор: Fortnox 18.6.2009, 11:31
Как вариант:

Код

                Console.WriteLine("Started...");
                StreamReader sr = new StreamReader("Example.txt", Encoding.Default);
                string[] splitted = new string[4];
                do
                {
                    splitted = sr.ReadLine().Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
                    Console.WriteLine("{0}\t{1}", splitted[3], splitted[4]);

                } while (!sr.EndOfStream);
                sr.Close();
                Console.WriteLine("Done");
                Console.ReadLine();

Автор: Bogdan1024 18.6.2009, 12:13
Цитата(Sharki @ 16.6.2009,  21:22)
Добрый вечер.
А может кто подскажет как можно прочитать не весь (txt file) а определённые колонки.Например если фаил выглядит так:

Код

-3.18     71.45       0         FID         utr_ssssss_s
-93.73    71.17      0         FID           utr_ssssss_s
-95.00    2.59        0         FID           utr_ssssss_s
-51.44     59.06     180     U201        utr_103301659_s
-34.29     59.06     180     U300        utr_104306105_s
-92.46     42.60      90      R106        utr_112815046_s


то надо прочитать последние две колонки.
Спасибо.

Устанавливаешь у потока позицию, с которой читать...

Автор: Sharki 19.6.2009, 00:06
 Bogdan1024 , Fortnox Спасибо.
 Подскажите.Горю.
Спасибо

Автор: Sharki 21.6.2009, 06:38
Help  smile  smile  smile 

Автор: Экскалупатор 21.6.2009, 21:15
Sharki, я что то не пойму, что вам конкретно нужно? 
Цитата

то надо прочитать последние две колонки.

???
так в текстовом файле нету колонок, там есть строки, вот и читайте строку, а потом делайте с ней то что нужно, т.е. удаляете лишние пробелы и читаете из нее последние два "СЛОВА", а не "КОЛОНКИ"

Цитата

 smile  smile  smile 

p.s. и не надо так убиваться, вы же так не убьетесь...

Автор: Conkistador 22.6.2009, 15:56
Читаете файл например как то так
Код

 // Открываем поток для чтения
            using (StreamReader _sr = new StreamReader(aFileInfo.FullName))
            {
                // Покуда есть что читать читаем построчно
                while (_sr.Peek() > -1)
                {
                    //List<String> _strArrTrack = new List<string>(_sr.ReadLine().Split(','));
                    _strTmp = _sr.ReadLine();
                    // Разбираем строку на массив
                    _strArr = new List<string>(_strTmp.Split(new char[] {' '}));
...
}
}

ну и потом просто обращаетесь к нужным элементам массива строк

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)