Excel报表的方法,一个过於简单,一个只能用於window平台(因为使用jdbc-odbc bridge),且无法使用到Excel内部的各种公式或是方法,因此,今天介绍一个apache出的元件叫POI,它可以在UNIX或window平台处理word或Excel档案,而不需要依靠window的com,并且可设定储存格格式、列印格式等等;今天我来介绍其中有关资料读取、新增、修改及删除的功能,若各位网友研究好其他的功能,麻烦Email给我(ljj@mlc.edu.tw),分享给大家! 一、需要用的档案:jakarta-poi-1.8.0-dev-20020917.jar 几乎每天都有1.8.0的最新版(但非正式版),正式的版本是1.5.0 http://jakarta.apache.org/builds/jakarta-poi/nightly/ 将档案复制到classpath所指到的地方 二、有兴趣的朋友可以参考 http://jakarta.apache.org/poi/ 三、先建立一个叫做book1.xls的Excel档,内容如下 ---------------------------------- 项目 单价 数量 合计 CPU 7000 5 35000 硬碟 2500 2 5000 记忆体 1600 3 4800 ---------------------------------- 其中合计的栏位是设定公式,单价*数量 四、资料读取範例 <%@ page contentType="text/html;charset=MS950" import="java.util.*,java.io.*" %> <%@ page import="org.apache.poi.poifs.filesystem.*,org.apache.poi.hssf.usermodel.*" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=MS950"> <title>读取Excel档案</title> </head> <body> <table border="1" width="100%"> <% FileInputStream finput = new FileInputStream(application.getRealPath("/")+"book1.xls" ); //设定FileINputStream读取Excel档 POIFSFileSystem fs = new POIFSFileSystem( finput ); HSSFWorkbook wb = new HSSFWorkbook(fs); HSSFSheet sheet = wb.getSheetAt(0); //读取第一个工作表,宣告其为sheet finput.close(); HSSFRow row=null; //宣告一列 HSSFCell cell=null; //宣告一个储存格 short i=0; short y=0; //以巢状迴圈读取所有储存格资料 for (i=0;i<=sheet.getLastRowNum();i++) { out.println("<tr>"); row=sheet.getRow(i); for (y=0;y<row.getLastCellNum();y++) { cell=row.getCell(y); out.print("<td>"); //判断储存格的格式 switch ( cell.getCellType() ) { case HSSFCell.CELL_TYPE_NUMERIC: out.print(cell.getNumericCellValue()); //getNumericCellValue()会回传double值,若不希望出现小数点,请自行转型为int break; |