Javaを使用してマイクロソフトのExcelにアクセスする方法
1、紹介
JavaではJExcelAPIとApache POIの2つの方法でマイクロソフトのExcelファイルにアクセスできます.どちらもかなりきれいな操作インタフェースを提供しています.以下、両者の使い方を簡単に紹介し、簡単に比較します.
2、比較
1)、JExcelAPIはビジネスアプリケーションには向いておらず、いずれもわけがわからずデータが読めない.
2)、Apache POIは純粋なJavaの実現であり、マイクロソフトのExcelだけでなくOpen Officeも読むことができ、新版HSSF 3.0にはPower Pointを読み取る機能も追加されている.とにかく非常に安定した、強力な実現です.使用を推奨します.
3)
3、使用
jexcelapi
File fp = new File(file);try { Workbook wb = Workbook.getWorkbook(fp); Sheet sheet = wb.getSheet(0); int columns = sheet.getColumns(); int rows = sheet.getRows(); String data; for(int col = 0;col < columns;col++) { for(int row = 0;row < rows;row++) { data = sheet.getCell(col, row).getContents(); //Your code here } }} catch(Exception ioe) { System.out.println("Error: "+ ioe);}
4、
POIの使用
POIには、次のものが含まれます.
POIFS:OLE 2ドキュメントを読み書きします.
HSSF:Excelドキュメントを読み書きします.
HWPF:Wordドキュメントの読み取りと書き込みが制限されています.
HWSL:PowerPointドキュメントの読み取りと書き込みが制限されています.
HSSFの使用例:
JavaではJExcelAPIとApache POIの2つの方法でマイクロソフトのExcelファイルにアクセスできます.どちらもかなりきれいな操作インタフェースを提供しています.以下、両者の使い方を簡単に紹介し、簡単に比較します.
2、比較
1)、JExcelAPIはビジネスアプリケーションには向いておらず、いずれもわけがわからずデータが読めない.
2)、Apache POIは純粋なJavaの実現であり、マイクロソフトのExcelだけでなくOpen Officeも読むことができ、新版HSSF 3.0にはPower Pointを読み取る機能も追加されている.とにかく非常に安定した、強力な実現です.使用を推奨します.
3)
3、使用
jexcelapi
File fp = new File(file);try { Workbook wb = Workbook.getWorkbook(fp); Sheet sheet = wb.getSheet(0); int columns = sheet.getColumns(); int rows = sheet.getRows(); String data; for(int col = 0;col < columns;col++) { for(int row = 0;row < rows;row++) { data = sheet.getCell(col, row).getContents(); //Your code here } }} catch(Exception ioe) { System.out.println("Error: "+ ioe);}
4、
POIの使用
POIには、次のものが含まれます.
POIFS:OLE 2ドキュメントを読み書きします.
HSSF:Excelドキュメントを読み書きします.
HWPF:Wordドキュメントの読み取りと書き込みが制限されています.
HWSL:PowerPointドキュメントの読み取りと書き込みが制限されています.
HSSFの使用例:
try {
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file));
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row;
HSSFCell cell;
int rows; // No of rows
rows = sheet.getPhysicalNumberOfRows();
int cols = 0; // No of columns
int tmp = 0;
// This trick ensures that we get the data properly even if it doesn’t start from first few rows
for(int i = 0; i < 10 || i < rows; i++) {
row = sheet.getRow(i);
if(row != null) {
tmp = sheet.getRow(i).getPhysicalNumberOfCells();
if(tmp > cols) cols = tmp;
}
}
for(int r = 0; r < rows; r++) {
row = sheet.getRow(r);
if(row != null) {
for(int c = 0; c < cols; c++) {
cell = row.getCell((short)c);
if(cell != null) {
// Your code here
}
}
}
}
} catch(Exception ioe) {
ioe.printStackTrace();
}