首页 > 其他 > 详细

ADF Faces导入Excel文件【附样例工程】

时间:2017-03-08 16:42:11      阅读:117      评论:0      收藏:0      [点我收藏+]


本文提供一个基于ADF Face组件开发样例工程,实现Excel导入开发中常见的处理。

    1.文件上传处理

    2.读取Excel单元格内容


本文是基于“ADF Faces导出Excel文件【附样例工程】”编写的,会省去许多细节部分的介绍,若理解困难的话,可以先看导出Excel部分。


实现的基本思路:

1. 应用ADF Faces的文件上传组件完成用户文件选取的交互,将其与后台ManagedBean建立值绑定,在表单提交时,文件上传组件封装了上传的实现细节并将处理后的文件对象传入至ManagedBean的属性中。

2. 应用命令按钮触发表单提交事件,触发ManagedBean完成事件处理过程。

3.由ManagedBean完成文件内容的读取和后续处理。

注:需要设定JSP页面中Form标签的文件上传属性为true,否则文件不会被处理。



下面是样例工程的创建过程:


创建工程名为DemoExcelImp

技术分享


创建页面imp.jsp

技术分享


拖入文件上传组件(Input File组件)和按钮组件

技术分享


通过为按钮设定Action属性,创建后台ManagedBean,并完成提交事件的注册

技术分享

技术分享


为文件上传组件与Bean之间建立值绑定,将文件对象绑定至Bean的file属性中。

注意Bean的属性类型选取为UploadFile而不是File。

技术分享


点击空白区即视为选取Form组件,为其设定UsesUpload属性为true,否则不会处理文件上传组件。

技术分享


至此JSP页面编写完毕,一下是其源代码部分:

技术分享

<f:view>
    <af:document title="imp.jsp" id="d1">
        <af:form id="f1" usesUpload="true">
            <af:inputFile label="文件上传组件" id="if1"
            value="#{bean1.file}"/>
            <af:commandButton text="提交文件" id="cb1"
            action="#{bean1.doUploadFile}" />
        </af:form>
    </af:document>
</f:view>


为工程引入POI库处理Excel内容。

技术分享


编写管理Bean的事件处理代码,内容:

  1. 根据Excel不同版本建立Workbook对象

  2. 读取第1个sheet页面的第1行的每一个单元格

  3. 输出单元格的字符串内容

技术分享

    public String doUploadFile() throws IOException {
        if (file == null) {
            return "";
        }
        
        Workbook wb = null;
        //区分Excel文件版本2003或2007+
        if (file.getFilename().matches(".*xls$")) {
            wb = new HSSFWorkbook(file.getInputStream());
        } else if (file.getFilename().matches(".*xlsx$")) {
            wb = new XSSFWorkbook(file.getInputStream());
        } else {
            System.out.println("文件类型错误!可接受Excel,请下载文件模板!");
            return null;    
        } 
        
        //输出第1个sheet页中第1行数据的字符串内容     
        Sheet sheet = wb.getSheetAt(0);
        int rownum = sheet.getFirstRowNum();
        Row row = sheet.getRow(rownum);
        for(int i=0;i<row.getLastCellNum();i++){
            Cell c = row.getCell(i);
            c.setCellType(Cell.CELL_TYPE_STRING);
            System.out.println(c.getStringCellValue());
        }
        return null;
    }


运行imp.jsp,要处理的Excel有2行数据,预期处理第一行数据。

技术分享


选取文件,点击提交按钮,查看JDeveloper控制台输出的内容。

技术分享


本文出自 “小伙伴” 博客,请务必保留此出处http://zglei.blog.51cto.com/9304205/1904255

ADF Faces导入Excel文件【附样例工程】

原文:http://zglei.blog.51cto.com/9304205/1904255

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!