两个xlsx文件内容可以比对吗?对应cell中的内容不一致加批注
请问有api可以固定处理吗
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");