2つのExcelファイルがあり、内容を比較して違いを強調したいと思いました。例えば:
最初のファイル...
name|age
abc|123
def|456
second file...
name|age
abc|123
def|456
ghi|789 - this being the differece
これを行うサードパーティのライブラリはありますか?またはそれを行うための最良の方法は何でしょうか?
2つのExcelファイルがあり、内容を比較して違いを強調したいと思いました。例えば:
最初のファイル...
name|age
abc|123
def|456
second file...
name|age
abc|123
def|456
ghi|789 - this being the differece
これを行うサードパーティのライブラリはありますか?またはそれを行うための最良の方法は何でしょうか?
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の簡単な紹介が、プロジェクトに役立つことを願っています:)
この質問から、私の答えは以下に部分的に複製されました。
私のプロジェクト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)
epplusを使用して両方のドキュメントをデータテーブルにロードし、それらを繰り返し処理して違いを見つけます。違いを強調する方法に応じて、セルにepplusで色を付けて、ファイルに保存し直すことができます。