我有2個excel文件,我想比較內容並突出顯示差異。 例如:比較2個excel文件的內容
第一個文件...
name|age
abc|123
def|456
second file...
name|age
abc|123
def|456
ghi|789 - this being the differece
沒有任何第三方庫這樣做呢? 或者最好的辦法是什麼?
我有2個excel文件,我想比較內容並突出顯示差異。 例如:比較2個excel文件的內容
第一個文件...
name|age
abc|123
def|456
second file...
name|age
abc|123
def|456
ghi|789 - this being the differece
沒有任何第三方庫這樣做呢? 或者最好的辦法是什麼?
就像DaDaDom說的那樣,Apache POI就是你要找的東西。您可以從this page下載。請注意,POI項目不完全獨立,您可能需要下載一些額外的庫。按照Apache POI網站上的說明進行操作。這是你如何使用它:
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 "";
}
}
我希望這種快速引入的Apache POI將幫助您與您的項目:)
非常感謝你 – user1646537
我會使用epplus將兩個文檔加載到數據表中,然後遍歷它們以找出差異。 根據你想如何突出差異,你可以簡單地使用epplus對單元格進行着色並將它們保存迴文件中。
EPPlus也可用於Java?看起來像.net項目給我。 –
對不起,沒有看到Java標籤:( –
我想這個epplus提供了一個更快的訪問excel文件,然後任何Java庫 – user1581900
從this question,我的答案部分重複以下。
我的項目simple-excel它提供了一堆Hamcrest Matchers幷包裝了Apache POI的語法。
當你這樣做的以下
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)
如果您正在尋找讀/寫Excel文件中, Apache Poi(http://poi.apache.org/)庫是(至少是我的)首選。 –
http://stackoverflow.com/questions/866346/easiest-way-to-compare-two-excel-files-in-java – titogeo
由gTito發佈的鏈接可能對你非常有用,如果你需要知道2個文件完全一樣。請注意,即使內容相同,不同的字體大小也意味着文件完全不同。 – user1581900