群眾:笑死人了,這還要你教么,別丟人現眼了,用FileOutputStream就可以了,寫個文件,擴展名為xls就可以了,哈哈,都懶得看你的,估計又是個水貨上來瞎喊,下去,喲貨~~
小筆:無聊的人一邊去,懶得教你,都沒試過,還雞叫雞叫,&^%&**(()&%$#$#@#@
HSSFWorkbook wb = new HSSFWorkbook();//構建新的XLS文檔對象
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);//注意,參數是文件輸出流對象
fileOut.close();
Example Two:創建Sheet
群眾:有點責任心好吧,什么是Sheet?欺負我們???
小筆:花300塊去參加Office 培訓班去,我不負責教預科
HSSFWorkbook wb = new HSSFWorkbook();//創建文檔對象
HSSFSheet sheet1 = wb.createSheet("new sheet");//創建Sheet對象,參數為Sheet的標題
HSSFSheet sheet2 = wb.createSheet("second sheet");//同上,注意,同是wb對象,是一個XLS的兩個Sheet
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
Example Three:創建小表格,并為之填上數據
群眾:什么是小表格啊?
小筆:你用過Excel嗎?人家E哥天天都穿的是網格襯衫~~~~
HSSFWorkbook document = new HSSFWorkbook();//創建XLS文檔
HSSFSheet salary = document.createSheet("薪水");//創建Sheet
HSSFRow titleRow = salary.createRow(0);//創建本Sheet的第一行
titleRow.createCell((short) 0).setCellValue("工號");//設置第一行第一列的值
titleRow.createCell((short) 1).setCellValue("薪水");//......
titleRow.createCell((short) 2).setCellValue("金額");//設置第一行第二列的值
File filePath = new File(baseDir+"excel/example/");
if(!filePath.exists())
filePath.mkdirs();
FileOutputStream fileSystem = new FileOutputStream(filePath.getAbsolutePath()+"/Three.xls");
document.write(fileSystem);
fileSystem.close();
Example Four :帶自定義樣式的數據(eg:Date)
群眾:Date!么搞錯,我昨天已經插入成功了~
小筆:是么?那我如果要你5/7/06 4:23這樣輸出你咋搞?
群眾:無聊么?能寫進去就行了!
小筆:一邊涼快去~
HSSFWorkbook document = new HSSFWorkbook();
HSSFSheet sheet = document.createSheet("日期格式");
HSSFRow row = sheet.createRow(0);
HSSFCell secondCell = row.createCell((short) 0);
/**
* 創建表格樣式對象
*/
HSSFCellStyle style = document.createCellStyle();
/**
* 定義數據顯示格式
*/
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
/**
* setter
*/
secondCell.setCellValue(new Date());
/**
* 設置樣式
*/
secondCell.setCellStyle(style);
File filePath = new File(baseDir+"excel/example/");
if(!filePath.exists())
filePath.mkdirs();
FileOutputStream fileSystem = new FileOutputStream(filePath.getAbsolutePath()+"/Four.xls");
document.write(fileSystem);
fileSystem.close();
Example Five:讀取XLS文檔
File filePath = new File(baseDir+"excel/example/");
if(!filePath.exists())
throw new Exception("沒有該文件");
/**
* 創建對XLS進行讀取的流對象
*/
POIFSFileSystem reader = new POIFSFileSystem(new FileInputStream(filePath.getAbsolutePath()+"/Three.xls"));
/**
* 從流對象中分離出文檔對象
*/
HSSFWorkbook document = new HSSFWorkbook(reader);
/**
* 通過文檔對象獲取Sheet
*/
HSSFSheet sheet = document.getSheetAt(0);
/**
* 通過Sheet獲取指定行對象
*/
HSSFRow row = sheet.getRow(0);
/**
* 通過行、列定位Cell
*/
HSSFCell cell = row.getCell((short) 0);
/**
* 輸出表格數據
*/
log.info(cell.getStringCellValue());
至此,使用POI操作Excel的介紹告一段落,POI是一個仍然在不斷改善的項目,有很多問題,比如說中文問題,大數據量內存溢出問題等等,但這個Pure Java的庫的性能仍然是不容質疑的,是居家旅行必備良品。
而且開源軟件有那么一大點好處是,可以根據自己的需要自己去定制。如果大家有中文、性能等問題沒解決的,可以跟我索要我已經改好的庫。當然,你要自己看原代碼,我也不攔你。