C# Bool返回true,而其中一个excel单元格值与使用C的其他单元格值不匹配#

C# Bool返回true,而其中一个excel单元格值与使用C的其他单元格值不匹配#,c#,selenium,mstest,C#,Selenium,Mstest,我比较了workbook1的第一张工作表和wrokook2的第一张工作表,然后在比较了第一张工作表的数据后,转到第二张工作表。将工作簿1的第二个工作表与工作簿2的第二个工作表进行比较。这里是图片 我使用的代码是 public bool CompareFiles(string filePath1, string filePath2) { bool result = false; Microsoft.Office.Interop.E

我比较了workbook1的第一张工作表和wrokook2的第一张工作表,然后在比较了第一张工作表的数据后,转到第二张工作表。将工作簿1的第二个工作表与工作簿2的第二个工作表进行比较。这里是图片

我使用的代码是

public bool CompareFiles(string filePath1, string filePath2)
        {

            bool result = false;
            Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
            excel.Visible = true;
            excel.DisplayAlerts = false;
            
            //Open files to compare
            Microsoft.Office.Interop.Excel.Workbook workbook1 = excel.Workbooks.Open(filePath1);
            Microsoft.Office.Interop.Excel.Workbook workbook2 = excel.Workbooks.Open(filePath2);
          
            int numSheets = workbook2.Sheets.Count;

            for (int a = 1; a <= numSheets; a++)
            {
                //Open sheets to grab values from
                Microsoft.Office.Interop.Excel.Worksheet worksheet1 = (Microsoft.Office.Interop.Excel.Worksheet)workbook1.Sheets[a]; 
                Microsoft.Office.Interop.Excel.Worksheet worksheet2 = (Microsoft.Office.Interop.Excel.Worksheet)workbook2.Sheets[a]; 

                //Get the used range of cells
                Microsoft.Office.Interop.Excel.Range range = worksheet2.UsedRange;
                int maxColumns = range.Columns.Count;
                int maxRows = range.Rows.Count;

                //Check that each cell matches
                for (int i = 1; i <= maxColumns; i++)
                {
                    for (int j = 1; j <= maxRows; j++)
                    {
                        var value = range.Cells[maxRows, maxColumns].Value2;
                        if (worksheet1.Cells[j, i].value== worksheet2.Cells[j, i].value)
                        {

                            result = true;
                        }
                        else
                        
                            result = false;
                    }
                    
                }

                
            }

            workbook1.Close();
            workbook2.Close();
            excel.Quit();

            return result;
        }
        Assert.IsTrue(CompareFiles(filepath1 , filepath2);
public bool比较文件(字符串文件路径1、字符串文件路径2)
{
布尔结果=假;
Microsoft.Office.Interop.Excel.Application Excel=新的Microsoft.Office.Interop.Excel.Application();
excel.Visible=true;
excel.DisplayAlerts=false;
//打开要比较的文件
Microsoft.Office.Interop.Excel.Workbook workbook1=Excel.Workbooks.Open(文件路径1);
Microsoft.Office.Interop.Excel.Workbook workbook2=Excel.Workbooks.Open(文件路径2);
int numSheets=workbook2.Sheets.Count;

对于(int a=1;a您可能正在比较对象引用(我假设worksheet2.Cells[j,I].value是一个对象)。请尝试将其转换为字符串

if ((string)worksheet1.Cells[j, i].value== (string)worksheet2.Cells[j, i].value)

您是否应该将var转换为字符串并使用string.Compare?我建议调试该特定行的读取方式。

它显示“无法将类型“double”转换为“string”,这是因为第3列中有数字。但它仍在传递testcase,因为单元格中的值不同。