3

2つのExcelファイルがあり、内容を比較して違いを強調したいと思いました。例えば:

最初のファイル...

name|age
abc|123
def|456
second file...
name|age
abc|123
def|456
ghi|789 - this being the differece

これを行うサードパーティのライブラリはありますか?またはそれを行うための最良の方法は何でしょうか?

4

3 に答える 3

7

DaDaDomが言ったように、ApachePOIはあなたが探しているものです。このページからダウンロードできます。POIプロジェクトは完全に独立しているわけではなく、追加のライブラリをダウンロードする必要がある場合があることに注意してください。ApachePOIWebサイトの指示に従います。これがあなたの使い方です:

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

新しいファイルの場合は、先に進む前にシートを作成する必要があるかもしれませんが、この場合、ファイルはすでに作成されています。

HSSFSheet sheet = wb.getSheetAt(0);       // first sheet
HSSFRow row     = sheet.getRow(0);        // first row
HSSFCell cell   = row.getCell((short)0);  // first cell

セルから値を取得するには、次を使用します。

String value = cell.getStringCellValue();

ただし、セルに格納されているタイプが数値の場合、エラーが発生します。数字を使用する場合:

Int value = cell.getCellValue();

これは、さまざまなセルデータ型を処理するために私が作成した方法です。

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 "";
    }
}

このApachePOIの簡単な紹介が、プロジェクトに役立つことを願っています:)

于 2012-10-08T10:25:01.933 に答える
4

この質問から、私の答えは以下に部分的に複製されました。

私のプロジェクトsimple-excelは、多数のHamcrest Matcherを提供し、ApachePOIの構文をまとめています。

次のようなことをすると、

assertThat(actual, WorkbookMatcher.sameWorkbook(expected));

たとえば、

java.lang.AssertionError:
Expected: entire workbook to be equal
     but: cell at "C14" contained <"bananas"> expected <nothing>,
          cell at "C15" contained <"1,850,000 EUR"> expected <"1,850,000.00 EUR">,
          cell at "D16" contained <nothing> expected <"Tue Sep 04 06:30:00">
    at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)

それについてのブログ投稿を読む

于 2013-02-18T09:08:40.893 に答える
0

epplusを使用して両方のドキュメントをデータテーブルにロードし、それらを繰り返し処理して違いを見つけます。違いを強調する方法に応じて、セルにepplusで色を付けて、ファイルに保存し直すことができます。

于 2012-10-08T10:11:01.223 に答える