比较2个excel文件的内容

use*_*537 3 java excel comparison compare

我有2个excel文件,我想比较内容并突出显示差异.例如:

第一档......

name|age
abc|123
def|456
second file...
name|age
abc|123
def|456
ghi|789 - this being the differece
Run Code Online (Sandbox Code Playgroud)

有没有第三方图书馆这样做?或者最好的方法是什么?

use*_*900 7

就像DaDaDom所说,Apache POI就是你要找的.您可以从此页面下载它.请注意,POI项目并非完全独立,您可能需要下载一些额外的库.按照Apache POI网站上的说明进行操作.这是你如何使用它:

InputStream myxls = new FileInputStream("workbook.xls"));
HSSFWorkbook wb = new HSSFWorkbook(myxls); // for *.xlsx use XSSFWorkbook
Run Code Online (Sandbox Code Playgroud)

如果它是一个新文件,您可能需要在继续之前创建工作表,但在这种情况下,文件已经创建.

HSSFSheet sheet = wb.getSheetAt(0);       // first sheet
HSSFRow row     = sheet.getRow(0);        // first row
HSSFCell cell   = row.getCell((short)0);  // first cell
Run Code Online (Sandbox Code Playgroud)

要从单元格中获取价值:

String value = cell.getStringCellValue();
Run Code Online (Sandbox Code Playgroud)

但是,如果存储在单元格中的类型是数字,则会出错.如果使用数字:

Int value = cell.getCellValue();
Run Code Online (Sandbox Code Playgroud)

这是我写的处理不同单元格数据类型的方法:

public String getValue(int x, int y){
    Row row = this.activeSheet.getRow(y);
    if(row==null) return "";
    Cell cell = row.getCell(x);
    if(cell==null) return "";
    int type = cell.getCellType();
    switch(type){
    case 0:
        return cell.getNumericCellValue() + "";
    case 1:
        return cell.getStringCellValue();
    case 2:
        return cell.getCellFormula();
    case 3:
        return "";
    case 4:
        return cell.getBooleanCellValue() + "";
    case 5:
        return cell.getErrorCellValue() + "";
    default:
        return "";
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望这个对Apache POI的快速介绍将帮助您完成项目:)