两个xlsx文件内容可以比对吗?对应cell中的内容不一致加批注

两个xlsx文件内容可以比对吗?对应cell中的内容不一致加批注

@liufei951027

请问您希望如何比对这两个xlsx文件?是希望使用Aspose.Cells的特定功能吗?

请问有api可以固定处理吗

@liufei951027,

Aspose.Cells 中没有比较功能。我认为 MS Excel 中也没有这种(比较)功能。如果您知道 MS Excel 中存在此类功能,请告知我们详细信息,以便我们进一步检查。我认为您必须自己进行逐个单元格的比较。我们准备了一个免费的 [应用程序],其中我们使用 Aspose.Cells 和 Aspose.Cells.GridJs API 进行比较。作为参考,您可以在此处获取应用程序演示的 [源代码] 以供参考。

此外,请参阅带有比较示例代码的 [线程] 以供参考。

@amjad.sahi
请参考以下样例代码。我们创建了两个样例文件并比较文件里的数据。在对应单元格中的内容不一致的地方添加了comment并将结果保存到了xlsx文件。请查看附件。 result.zip (23.3 KB)

样例代码如下:

Workbook wb = new Workbook(filePath + "sample1.xlsx");
Workbook wb2 = new Workbook(filePath + "sample2.xlsx");
WorksheetCollection sheets1 = wb.getWorksheets();
WorksheetCollection sheets2 = wb2.getWorksheets();

int count = sheets1.getCount();
for (int s = 0; s < count; s++)
{
	Worksheet sheet = sheets1.get(s);
    Worksheet temp = sheets2.get(sheet.getName());
    if (temp == null)
    {
        continue;
    }

    Cells cells1 = sheet.getCells();
    Cells cells2 = temp.getCells();
    int maxRow = Math.max(cells1.getMaxDataRow(), cells2.getMaxDataRow());
    int maxCol = Math.max(cells1.getMaxDataColumn(), cells2.getMaxDataColumn());
    for (int i = 0; i <= maxRow; i++)
    {
        for (int j = 0; j <= maxCol; j++)
        {
            Cell cell1 = cells1.checkCell(i, j);
            Cell cell2 = cells2.checkCell(i, j);
            if (cell1 == null)
            {		            	
                if (cell2 == null || null == cell2.getStringValue() || "" == cell2.getStringValue())
                {
                    continue;
                }
                int index = temp.getComments().add(cell2.getName());
                Comment comment = temp.getComments().get(index);
                comment.setNote("null test note");
            }
            else if (cell2 == null)
            {
                if (null == cell1.getStringValue() || "" == cell1.getStringValue())
                {
                    continue;
                }
                
                int index = temp.getComments().add(cell1.getName());
                Comment comment = temp.getComments().get(index);
                comment.setNote("null test note");
                
                
            }
            else if (!cell1.getStringValue().equals(cell2.getStringValue()))
            {
            	int index = temp.getComments().add(cell2.getName());
                Comment comment = temp.getComments().get(index);
                comment.setNote("data test note");		                
            }
        }
    }

}

wb2.save(filePath + "out_java.xlsx");