struts2框架实现Excel表格的上传及jar包冲突解决

1.1上传要点

1.1.1   form表单的提交方式必须设置为 method = post;

1.1.2   form表单属性必须设置为enctype="multipart/form-data"

1.1.3   form表单中添加input标签,type=”file”,name = example

1.1.4   action中,必须设置属性public File example,并提供set方法

        ,还可以获取文件的名称和文件类型,但是他们的命名有严格的要求,

        文件名必须命名为:exampleFileName,而文件类型必须命名为

        exampleFileContentType,并为他们提供set方法。

1.2文件的读取

1.2.1   通过1.1就可以在action中获取到excel文件的File对象。然后可以

        对File对象进行操作。为了将excel文件中的内容解析出来,这里需要

        用到POI进行操作。其中操作2003版本的excel和操作2007版本的

        Excel不同在于用到的API是不同的。废话不多说,直接上代码:

        (这里请注意,很多同学可能碰到的项目中原来使用的是2003版的excel

而现在又想用2007版,那么你可能碰到jar包冲突的问题,下面我会

接受两种解决jar包冲突的方案,请大家指正)。

 

1.2.2   解析2003版的Excel表格代码

publicvoid ExcelXLS(

              File excel) throws Exception {

        

              if (null == excel) {

                   thrownew Exception("excel表格为空");

              }

 

              HSSFWorkbook hworkbook = null;

              FileInputStream is = new FileInputStream(excel);

              hworkbook = new HSSFWorkbook(is);

              HSSFSheet sheet = hworkbook.getSheetAt(0);

              introws = sheet.getLastRowNum();

                //只获取第一列的内容

              for (introwIndex = 0, col = 0; rowIndex < rows; rowIndex++) {

                   HSSFRow row2 = sheet.getRow(rowIndex);

                      //获取单元格内容

                   String conment = row2.getCell(col).toString();

                     System.out.println(conment);

              }

          }

 

1.2.2   解析2007版的Excel表格代码

publicvoid ExcelXLSX(

              File excel) throws Exception {

              if (null == excel) {

                   thrownew Exception("excel表格为空");

              }

              XSSFWorkbook xWorkbook = null;

              FileInputStream is = new FileInputStream(excel);

              xWorkbook = new XSSFWorkbook(is);

              XSSFSheet xsheet = xWorkbook.getSheetAt(0);

              int rows = xsheet.getLastRowNum();

                //只获取第一列的内容

              for (introwIndex = 0, col = 0; rowIndex < rows; rowIndex++) {

XSSFRow row2 = xsheet.getRow(rowIndex);

                      //获取单元格内容

                   String conment = row2.getCell(col).toString();

                     System.out.println(conment);

              }

          }

 

1.3POI jar包冲突解决

1.3.1   异常信息

org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException

    at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:61)

1.3.2   解决方案

        1)将xbean-2.2.0.jar替换为xbean-2.3.0.jar

    2)删除xbean-2.2.0.jar,替换为poi-3.6目录下ooxml-lib目录下

的dom4j-1.6.1.jar、geronimo-stax-api_1.0_spec-1.0.jar、

xmlbeans-2.3.0.jar,当然如果你已经导入了dom4j,这里就没

有必要再替换了,注意版本。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值