/**
* xlsx 파일(XSSFWorkbook)을 xls 파일(HSSFWorkbook)로 변환하는 메서드.
* [참조] http://stackoverflow.com/questions/20049922/java-poi-api-convert-from-xlsx-to-xls
*
* @param xssfWorkbook
* @return
* @throws Exception
*/
public static HSSFWorkbook convertXlsxToXls(String filePath) throws Exception {
FileInputStream fis = new FileInputStream(new File(filePath));
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(fis);
HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
int sheetCnt = xssfWorkbook.getNumberOfSheets();
for (int i = 0; i < sheetCnt; i++) {
Sheet sIn = xssfWorkbook.getSheetAt(i);
Sheet sIn = xssfWorkbook.getSheetAt(0);
Sheet sOut = hssfWorkbook.createSheet(sIn.getSheetName());
Iterator rowIt = sIn.rowIterator();
while (rowIt.hasNext()) {
Row rowIn = (Row) rowIt.next();
Row rowOut = sOut.createRow(rowIn.getRowNum());
Iterator cellIt = rowIn.cellIterator();
while (cellIt.hasNext()) {
Cell cellIn = (Cell) cellIt.next();
Cell cellOut = rowOut.createCell(cellIn.getColumnIndex(), cellIn.getCellType());
switch (cellIn.getCellType()) {
case Cell.CELL_TYPE_BLANK: break;
case Cell.CELL_TYPE_BOOLEAN:
cellOut.setCellValue(cellIn.getBooleanCellValue());
break;
case Cell.CELL_TYPE_ERROR:
cellOut.setCellValue(cellIn.getErrorCellValue());
break;
case Cell.CELL_TYPE_FORMULA:
cellOut.setCellFormula(cellIn.getCellFormula());
break;
case Cell.CELL_TYPE_NUMERIC:
cellOut.setCellValue(cellIn.getNumericCellValue());
break;
case Cell.CELL_TYPE_STRING:
cellOut.setCellValue(cellIn.getStringCellValue());
break;
}
CellStyle styleIn = cellIn.getCellStyle();
CellStyle styleOut = cellOut.getCellStyle();
styleOut.setDataFormat(styleIn.getDataFormat());
cellOut.setCellComment(cellIn.getCellComment());
}
}
}
return hssfWorkbook;
}
'Dev Language > JAVA' 카테고리의 다른 글
Log4j 로 쿼리 로그 깔금 하게 보기 (0) | 2016.02.12 |
---|---|
poi를 이용한 (*.xls, *.xlsx)읽기 (0) | 2015.10.06 |
JAVA 날짜 SimpleDateFormat 사용하기 (0) | 2015.04.07 |
request.getParameter() 방식 Param 추출 (0) | 2015.03.19 |
파일생성 예제 (0) | 2015.02.24 |