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の使用例:
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();
}