How to compare the Excel sheets using Interop objects in Ranorex
File: ExcelComparison.UserCode.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Drawing;
using System.Threading;
using WinForms = System.Windows.Forms;

using Ranorex;
using Ranorex.Core;
using Ranorex.Core.Repository;
using Ranorex.Core.Testing;
using Microsoft.Office.Interop.Excel;

namespace GlobalProjects
{
    public partial class ExcelComparison
    {
        private void Init()
        {
            CompareCell();
        }

        Excel.Application xlapp;
        Excel.Workbook xlworkbook1, xlworkbook2;
        Excel.Worksheet xlworksheet1, xlworksheet2;
        Excel.Range xlrange1, xlrange2;
        
        public void CompareCell()
        {
            xlapp = new Excel.ApplicationClass();
            xlapp.WindowState = Excel.XlWindowState.xlMaximized;
            xlapp.Visible = true;
            
            xlworkbook1 = xlapp.Workbooks.Open("D:\\Ranorex\\GlobalProjects\\Workbook-1.xlsx");
            xlworkbook2 = xlapp.Workbooks.Open("D:\\Ranorex\\GlobalProjects\\Workbook-2.xlsx");
            
            xlworksheet1 = (Excel.Worksheet)xlworkbook1.Sheets["Sheet1"];
            xlworksheet2 = (Excel.Worksheet)xlworkbook2.Sheets["Sheet1"];
            
            xlrange1 = xlworksheet1.UsedRange;
            xlrange2 = xlworksheet2.UsedRange;
            
            if(xlrange1.Rows.Count.Equals(xlrange2.Rows.Count) && xlrange1.Columns.Count.Equals(xlrange2.Columns.Count))
            {
                Report.Info("Excel range matched.");
                for(int rowcnt=1; rowcnt<=xlrange1.Rows.Count; rowcnt++)
                {
                    for(int colcnt=1; colcnt<=xlrange1.Columns.Count; colcnt++)
                    {
                        string data1 = (((xlrange1.Cells[rowcnt, colcnt] as Excel.Range).Value2).ToString());
                        if(data1==null)
                        {
                            data1="";
                        }
                        string data2 = (((xlrange2.Cells[rowcnt, colcnt] as Excel.Range).Value2).ToString());
                        if(data2==null)
                        {
                            data2="";
                        }
                        
                        if(data1.Equals(data2))
                        {
                            Report.Info("Row "+rowcnt+" Column "+colcnt+" -> Matched Cell("+rowcnt+","+colcnt+")");
                        }
                        else
                        {
                            Report.Info("Row "+rowcnt+" Column "+colcnt+" -> Unatched Cell("+rowcnt+","+colcnt+")");
                        }
                    }
                }
                Report.Success("Data comparison successfully done. Status: Pass");
            }
            else
            {
                Report.Info("Excel range not matched. Status: Fail");
            }
            xlapp.Quit();
        }
        
    }
}
Advertisement