보통 엑셀 파일은 jxl 파일로 읽기 쓰기 하는 것이 편하다.
하지만 고객이 xlsx 파일로 하고 싶다고 하면 방법이 없다.
이럴 때는 쓰기엔 xls 파일을 jxl 로 사용하고 읽을때는 xlsx 를 가능하게 해주면
될 것 같다.
그래서 jxl 은 xlsx 를 지원 하지 않으므로
poi 를 써서 엑셀 읽기를 구현해 보았다.
쭉 내려 가면서 보면 이해가 될 것이다.
위 부분을 주석 처리 하고 아래 부분을 주석을 풀면 xlsx(엑셀 2007 버전 포맷)
이 되므로 사용하기 쉬울 것이다.
패키지 파일은 첨부 하였으나 안보인다면
http://poi.apache.org/
경로로 가서 받으면 된다.
package excel;
import java.io.File;
import java.io.FileInputStream;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class excelTest2 {
/**
* 용도:
* 파라미터:
* 작성자 :
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//String filePath = "c:/품질관리_cdma_0111.xlsx";
String filePath = "c:/1.xls";
try{
//xls 파일 읽기***************************************************
POIFSFileSystem excel = new POIFSFileSystem(new FileInputStream(filePath));
HSSFWorkbook workBook = new HSSFWorkbook(new FileInputStream(new File(filePath)));
HSSFSheet sheet = null;
HSSFRow row = null;
HSSFCell cell = null;
//************************************************************************
/*
*
//*********************************************** xlsx 파일 읽기
XSSFWorkbook workBook = new XSSFWorkbook(new FileInputStream(new File(filePath)));
XSSFSheet sheet = null;
XSSFRow row = null;
XSSFCell cell = null;
//****************************************************************
*/
int sheetNum = workBook.getNumberOfSheets();
for(int k=0;k<sheetNum;k++){
sheet = workBook.getSheetAt(k);
int rows = sheet.getPhysicalNumberOfRows();
for(int r=0;r<rows;r++){
row = sheet.getRow(r);
int cells = row.getPhysicalNumberOfCells();
for(short c=0;c<cells;c++){
cell = row.getCell(c);
System.out.println("row:"+r+"==cells:"+c);
if(cell== null){
continue;
}
switch(cell.getCellType()){
case 0:
System.out.println(cell.getNumericCellValue());
break;
case 1:
System.out.println(cell.getStringCellValue());
break;
case Cell.CELL_TYPE_FORMULA :
System.out.println(cell.getCellFormula());
break;
default:
System.out.println("");
}
}//cell
}//row
}
}catch(Exception e){
e.printStackTrace();
}
}
}
'JAVA' 카테고리의 다른 글
[ JAVA ] 자바 TEXT 파일 읽을 때 한글 깨짐 현상 (21) | 2011.04.12 |
---|---|
[자바 Decompiler] jar 파일 에 대한 디컴파일러 (0) | 2011.03.29 |
[ JAVA ] 자바 property 파일 위치 찾는 법 과 사용법 (0) | 2011.01.11 |
[ JAVA ] 자바 HTTPS 통신 (7) | 2010.10.30 |
[ JAVA ] 리눅스에서 자바 어플리케이션 프로그램 실행 (jar 파일 실행) (4) | 2010.10.28 |
댓글