Как я могу сравнить два листа Excel в .Net 2.0? - PullRequest
0 голосов
/ 13 июня 2011

У меня два текстовых файла (это файл, разделенный запятыми). Шаблон двух файлов приведен ниже.

            SD,CurrentDate,RecordCount
    NI,FirstName,LastName,Place,Language
    EQ,Degree,University,Year,Aggregate
    ED,CurrentDate,RecordCount

Данные в первом файле - one.txt

          SD,13/06/2010,6
          NI,Rajesh,kumar,xxxx,english
          EQ,X,Stateboard,2004,75
          EQ,XII,Stateboard,2006,85
          EQ,B.E,Oxford,2008,79
             ED,13/06/2010,6

Данные во втором файле - Second.txt

          SD,13/06/2010,6
          NI,Rajesh,kumar,,english
          EQ,X,,2004,75
          EQ,XII,Stateboard,2006,
          EQ,,Oxford,2008,79
          ED,13/06/2010,6

Теперь я поместил значение one.txt в «sheet1» листа Excel (Output.xls), а затем я заполнил

значение Second.txt для "sheet2" листа Excel (Output.xls) с использованием кода .Net.

Теперь я хочу сравнить данные двух листов и заполнить разницу в «sheet3».

О / п "Sheet3" будет иметь.

    Cell1       Cell2           Cell3           Cell4       Cell5
    SD:True     CurrentDate:True    RecordCount:True
    NI:True     FirstName:True      LastName:True       Place:False   Language:True
    EQ:True     Degree:True     University:False    Year:True   Aggregate:True
    EQ:True     Degree:True     University:True     Year:True   Aggregate:False
    EQ:True     Degree:False        University:True     Year:True   Aggregate:True
    SD:True     CurrentDate:True    RecordCount:True

Как я могу сравнить эти два листа? Возможно ли это через VBA? Могу ли я вызвать код VBA в .Net? Пожалуйста, кто-нибудь предоставит мне решение?

1 Ответ

0 голосов
/ 18 июня 2011

Похоже, вы хотели бы сравнить 2 листа после того, как вы вручную или мелодраматически заполнили значения до. В этом случае следующий код выполнит работу, но вы должны изменить части, которые будут вставлять имя столбца перед логическим значением

Dim objEX as new Excel.Application
    objEX.Visible = True
    ' Optional if you want to see what is
    ' going on in EXCEL while your code is being executed.


objEX.Workbooks.Open "C:\My Files\Filename.xls"
'Make sure you put the right path of the excel workbook you want to open

With objEX
    .Sheets(1).Activate
    .Range("a1").Select

    .Sheets(2).Activate
    .Range("a1").Select

    .Sheets(3).Activate
    .Range("a1").Select


    'assuming the populated data starts at Cell A1
    For i = 0 To 6      'because you have 6 rows
        For j = 0 To 5  'because you have 5 columns
            If .Sheets(1).ActiveCell.Offset(i, j).Value = .Sheets(2).ActiveCell.Offset(i, j).Value Then
                .Sheets(3).ActiveCell.Offset(i, j).Value = "True"
            Else
                .Sheets(3).ActiveCell.Offset(i, j).Value = "False"
            End If
        Next
    Next


    .ActiveWorkbook.Save
    'Saves the changes you have done

    .ActiveWorkbook.Close
    'Closes the workbook


    .Quit
    'Quits excel instance and releases the process from task manager

End With

    Set objEX = Nothing
    'Garbage Collection and making sure memory is released to other processes.
...