我要在JSP中开发程序,请问如何在JSP中读入EXCEL表的数据。

解决方案 »

  1.   

    用POI,
    介绍:
    Jakarta_POI 使用Java读写Excel(97-2002)文件,可以满足大部分的需要。
    因为刚好有一个项目使用到了这个工具,花了点时间顺便翻译了一下POI本身
    带的一个Guide.有一些节减和修改,希望给使用这个项目的人一些入门帮助。
    POI 下面有几个自项目:HSSF用来实现Excel 的读写.以下是HSSF的主页
    http://jakarta.apache.org/poi/hssf/index.html
    下面的介绍是基于以下地址的翻译:
    http://jakarta.apache.org/poi/hssf/quick-guide.html
    目前的版本为1.51应该是很长时间之内的一个稳定版,但HSSF提供的Sample不是基于
    1.51所写,所以使用的时候需要适当的注意.
    其实POI下面的几个子项目侧重不同读写 Word 的HDF正在开发当中.
    XML下的FOP(http://xml.apache.org/fop/index.html)
    可以输出pdf文件,也是比较好的一个工具
    目录:
    创建一个workbook
    创建一个sheet
    创建cells
    创建日期cells
    设定单元格格式说明:
    以下可能需要使用到如下的类
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFDataFormat;
    import org.apache.poi.hssf.usermodel.HSSFFont;
    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.hssf.util.HSSFColor;创建workbookHSSFWorkbook wb = new HSSFWorkbook();
    //使用默认的构造方法创建workbook
    FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    //指定文件名
    wb.write(fileOut);
    //输出到文件
    fileOut.close();创建一个sheetHSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet sheet1 = wb.createSheet("new sheet");
    //workbook创建sheet
    HSSFSheet sheet2 = wb.createSheet("second sheet");
    //workbook创建另外的sheet
    FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    wb.write(fileOut);
    fileOut.close();创建cells
    HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet sheet = wb.createSheet("new sheet");
    //注意以下的代码很多方法的参数是short 而不是int 所以需要做一次类型转换
    HSSFRow row = sheet.createRow((short)0);
    //sheet 创建一行
    HSSFCell cell = row.createCell((short)0);
    //行创建一个单元格
    cell.setCellValue(1);
    //设定单元格的值
    //值的类型参数有多中double ,String ,boolean,
    row.createCell((short)1).setCellValue(1.2);
    row.createCell((short)2).setCellValue("This is a string");
    row.createCell((short)3).setCellValue(true);// Write the output to a file
    FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    wb.write(fileOut);
    fileOut.close();创建日期cells
    HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet sheet = wb.createSheet("new sheet");HSSFRow row = sheet.createRow((short)0);HSSFCell cell = row.createCell((short)0);
    //设定值为日期
    cell.setCellValue(new Date());HSSFCellStyle cellStyle = wb.createCellStyle();
    //指定日期显示格式
    cellStyle.setDataFormat(HSSFDataFormat.getFormat("m/d/yy h:mm"));
    cell = row.createCell((short)1);
    cell.setCellValue(new Date());
    //设定单元格日期显示格式
    cell.setCellStyle(cellStyle);FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    wb.write(fileOut);
    fileOut.close();
    设定单元格格式
    单元格格式的设定有很多形式包括单元格的对齐方式,内容的字体设置,
    单元格的背景色等,因为形式比较多,只举一些例子.以下的例子在
    POI1.5中可能会有所改变具体查看API.
    ..........
    // Aqua background
    HSSFCellStyle style = wb.createCellStyle();
    //创建一个样式
    style.setFillBackgroundColor(HSSFCellStyle.AQUA);
    //设定此样式的的背景颜色填充
    style.setFillPattern(HSSFCellStyle.BIG_SPOTS);//样式的填充类型。
    //有多种式样如:
    //HSSFCellStyle.BIG_SPOTS
    //HSSFCellStyle.FINE_DOTS
    //HSSFCellStyle.SPARSE_DOTS等
    style.setAlignment(HSSFCellStyle.ALIGN_CENTER );
    //居中对齐
    style.setFillBackgroundColor(HSSFColor.GREEN.index);
    //设定单元个背景颜色
    style.setFillForegroundColor(HSSFColor.RED.index);
    //设置单元格显示颜色
    HSSFCell cell = row.createCell((short) 1);
    cell.setCellValue("X");
    cell.setCellStyle(style);
      

  2.   

    或者参考
    http://www.javaresearch.org/article/showarticle.jsp?column=331&thread=4804
    Jakarta的POI项目提供了一组操纵Windows文档的Java API,如下几个类提供了操作Excel文件的方便的途径:HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell,分别代表了Excel电子表格中的Book、Sheet、行和单元格。
    你可以在下面地址下载到最新的POI工具包:
        http://jakarta.apache.org/poi/index.html
    下面的代码创建一个Excel文件test.xls,并在第一行的第一格中写入一条消息:import org.apache.poi.hssf.usermodel.*; 
    import java.io.FileOutputStream; // code run against the jakarta-poi-1.5.0-FINAL-20020506.jar. 
    public class PoiTest {     static public void main(String[] args) throws Exception { 
            FileOutputStream fos = new FileOutputStream("d:\test.xls"); 
            HSSFWorkbook wb = new HSSFWorkbook(); 
            HSSFSheet s = wb.createSheet(); 
            wb.setSheetName(0, "first sheet"); 
            HSSFRow row = s.createRow(0); 
    HSSFCell cell = row.createCell(0); 
    cell.setCellValue("Hello! This message is generated from POI."); 
            wb.write(fos); 
            fos.close(); 
        } } 读取Excel文件时,首先生存一个POIFSFileSystem对象,由POIFSFileSystem对象构造一个HSSFWorkbook,该HSSFWorkbook对象就代表了Excel文档。下面代码读取上面生成的Excel文件写入的消息字串:    POIFSFileSystem fs = null; 
        HSSFWorkbook wb = null;     try { 
        fs = new POIFSFileSystem(new FileInputStream("d:\test.xls")); 
        wb = new HSSFWorkbook(fs); 
        } catch (IOException e) { 
          e.printStackTrace(); 
        } 
        HSSFSheet sheet = wb.getSheetAt(0); 
        HSSFRow row = sheet.getRow(0); 
        HSSFCell cell = row.getCell((short) 0); 
    String msg = cell.getStringCellValue();