一、Excel 文件上传
0.0 功能实现
参考内容:
http://blog.csdn.net/u013871100/article/details/52901996
1.0问题描述
测试过程中,选择一个 Excel 文件上传,版本为 office 2007
1.2异常信息
Exception in thread "main" org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)
at org.apache.poi.poifs.storage.HeaderBlock.<init>(HeaderBlock.java:128)
at org.apache.poi.poifs.storage.HeaderBlock.<init>(HeaderBlock.java:112)
at org.apache.poi.poifs.filesystem.NPOIFSFileSystem.<init>(NPOIFSFileSystem.java:302)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:86)
1.3异常解释
代码中用HSSFSheet 进行表单获取,以及使用HSSFXXX对行、列内容进行处理
而HSSFSheet 导入时只支持2007版本而不支持其他版本
1.4问题解决
参考内容:
http://blog.csdn.net/mmm333zzz/article/details/7962377
HSSFSheet 系列进行文件的处理,只能处理2007版本以下的
XSSFSheet 系列进行文件的处理,处理2007版本
2.0问题描述
测试过程中,获取的数据总数与已经总数不一致,即数据丢失
2.1问题解决
参考内容:
http://blog.csdn.net/u013871100/article/details/52901996
row / cell 取值从0 开始
3.0问题描述
上传文件中含有手机号码,对手机号码进行格式校验时异常,检查正则无误,跟踪代码发现接收的数据变成科学计数法
3.1问题解决
参考内容:
http://blog.csdn.net/cclovett/article/details/16343615
使用BigDecimal 对数据进行转化
参考内容:
http://jingyan.baidu.com/article/0964eca27a39808285f5363c.html
将模板中手机号码的单元格格式,设置为 数字--文本
4.0问题描述
读取文本内容时,出现异常
4.1异常描述
java.lang.IllegalStateException: Cannot get a text value from a numeric cell
at org.apache.poi.xssf.usermodel.XSSFCell.typeMismatch(XSSFCell.java:994) ~[poi-ooxml-3.14.jar:3.14]
at org.apache.poi.xssf.usermodel.XSSFCell.getRichStringCellValue(XSSFCell.java:399) ~[poi-ooxml-3.14.jar:3.14]
at org.apache.poi.xssf.usermodel.XSSFCell.getStringCellValue(XSSFCell.java:351) ~[poi-ooxml-3.14.jar:3.14]
4.2异常解释
试图将Number 转换为String
4.3异常解决
参考内容:
http://blog.csdn.net/ysughw/article/details/9288307
进行格式转化
5.0问题描述
取出Map的Values集合,并当做查询参数时异常
5.1异常描述
java.util.HashMap$Values cannot be cast to java.util.Set
5.2异常解决
遍历Map,组装Value
二、文件下载
0.0功能实现
参考内容:
http://meigesir.iteye.com/blog/1539358
http://www.cnblogs.com/ungshow/archive/2009/01/12/1374491.html
1.0问题描述
无法映射访问路径
1.1代码内容
@RequestMapping("excelModelDown")
public void excelModelDown(
// @RequestParam(defaultValue="",required=false)
// 添加此行注释后,请求正常映射
HttpServletResponse response
){
return ;
}
// 在实现中重新定义response 依然无法解决问题
// 取消上述@RequestParam标签即可
2.0问题描述
无法获取放到src/main/resources下的文件
2.1问题解决
resources中的文件打包时也被放在classes目录下。使用this.getClass().getClassLoader().getResource("");
读取src/main/resources 下的文件
获取文件路径 this指代当前类
3.0问题描述
放在SRC的文件为英文名称,下载的文件欲换成中文名称
但更换名称后,下载的文件变为未知文件
注:
response.addHeader("Content-Disposition", "attachment;filename=" + new String(EXCEL_MODEL_CHINESE_NAME.getBytes("gb2312"), "ISO8859-1" )+"."+ext.toLowerCase());
若文件名称不变,则设置"fileName = "+new String(currentFileName.getBytes())
若文件名称变更,setFileName 时,给出 全限定名称,文件名+.+文件类型
下载文件名称乱码问题解决
http://lj830723.iteye.com/blog/1415479
三、上传
1.MultipartFile 使用 -- 接收上传的 Excel 文件
参考内容:
http://blog.csdn.net/swingpyzf/article/details/20230865
2.上传文件时报异常
Caused by: java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver configured?
at org.springframework.util.Assert.notNull(Assert.java:112) ~[spring-core-4.1.9.RELEASE.jar:4.1.9.RELEASE]
at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.resolveName(RequestParamMethodArgumentResolver.java:168) ~[spring-web-4.1.9.RELEASE.jar:4.1.9.RELEASE]
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:88) ~[spring-web-4.1.9.RELEASE.jar:4.1.9.RELEASE]
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:78) ~[spring-web-4.1.9.RELEASE.jar:4.1.9.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:162) ~[spring-web-4.1.9.RELEASE.jar:4.1.9.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:129) ~[spring-web-4.1.9.RELEASE.jar:4.1.9.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) ~[spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:775) ~[spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705) ~[spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) ~[spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) ~[spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) ~[spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:965) ~[spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE]
... 33 common frames omitted
解决方案:
http://blog.csdn.net/jiangyu1013/article/details/60758582
3.
Expected MultipartHttpServletRequest: is a MultipartResolver configured
http://blog.csdn.net/jiangyu1013/article/details/60758582
4.接收上传文件内容为空
MultipartFile 接收上传结果为空
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 请求编码格式 -->
<property name="defaultEncoding" value="utf-8"></property>
<!-- 上传文件大小(单位:字节) -->
<property name="maxUploadSize" value="50000000"></property>
<!-- 缓冲区大小(单位:KB) -->
<property name="maxInMemorySize" value="1024"></property>
</bean>
<context:component-scan base-package="com.jrd.dams.admin">
<context:exclude-filter type="regex"
expression="com.jrd.dams.admin.controller.*" />
</context:component-scan>
备注:
1.放在 scan 上,报错,数据库连接异常
appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop
2.更换位置后正常
解决方案:
http://www.cnblogs.com/songyunxinQQ529616136/p/6646070.html
接收文件名称与 HTML中上传文件名称相同
5.与File对比
// 包含文件名称及扩展名
String fileName = excelFile.getOriginalFilename();
// 只包含文件名,与File 的getFileName方法有区别
String fileName = excelFile.getFileName();
wb = new XSSFWorkbook(excelFile.toString());
XSSFWorkbook 加载 MultipartFile 时异常
http://jingyan.baidu.com/article/11c17a2c073e12f446e39d38.html
wb = new XSSFWorkbook(excelFile.getInputStream());
分享到:
相关推荐
总结来说,Apache POI 3.10.1版本的上传组件为Java开发者提供了一套强大的工具,用于处理和操作Microsoft Office的文件格式,涵盖了Excel、Word和PowerPoint的多种功能,大大提升了开发效率并扩展了应用的可能性。
总结来说,"struts2 POI-3.7 excel上传下载"项目展示了如何利用Struts2的文件上传功能和Apache POI库在Java Web应用中实现Excel文件的上传和下载。通过对Struts2的拦截器配置、Action类的编写以及POI的API使用,我们...
总结来说,Apache POI是Java开发中处理Microsoft Office文件的强大工具,提供了对Excel、Word等多种文件格式的全面支持,能够满足各种业务场景的需求。在"poi-bin-3.17-20170915.tar.gz"这个压缩包中,包含了3.17...
总结来说,Apache POI是Java处理Excel文件的强大工具,通过它我们可以轻松地实现Excel的上传和下载功能,满足Web应用中的数据交互需求。在实际项目中,理解并掌握POI的使用方法对于提升工作效率至关重要。
总结来说,"基于POI的Excel上传下载完成示例"是一个集成了Ajax、Servlet和Apache POI的综合案例,它涵盖了文件上传、文件下载、Excel数据读写等多个关键技术点,对于学习和理解Java Web开发中的Excel处理具有很高的...
总结,通过SpringBoot结合Apache POI,我们可以轻松地实现Excel文件的导入和导出功能。在处理数据时,使用`ExcelFormatUtil`工具类能有效地处理各种单元格数据格式,确保数据处理的准确性和一致性。同时,要注意文件...
《Apache POI:Java解析Excel与Word的利器》 Apache POI,这是一套由Apache软件基金会开发的开源库,专门用于处理Microsoft Office格式的文件,如Excel(.xlsx, .xls)、Word(.docx, .doc)等。标题中的"poi-3.15....
例如,它可以用于将数据库中的数据导出为Excel文件供用户下载,或者接收用户上传的Excel文件并将数据导入到数据库。 6. **API调用**: 在Demo中,开发者可以学习如何调用ExcelUtils的API,如创建工作簿、工作表,...
Apache POI 是一个开源项目,专门用于处理...总结来说,这个压缩包提供了处理Office文件所需的基本环境,你可以通过学习和使用Apache POI的相关API,轻松地在Java应用程序中集成对Word、Excel和PowerPoint的支持。
package com.poiexcel.util; import java.io.IOException; import java.io.InputStream; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List...
总结起来,"SpringMvc+POI 导入Excel"是一个涵盖前端交互、后端处理、文件上传、数据读取、验证和保存等多个环节的综合技术实践。通过学习和掌握这些知识点,开发者可以有效地实现Web应用中的Excel数据导入功能,...
在Java开发中,Apache POI 是一个...总结,Apache POI是Java开发中处理Excel的强大工具,结合Servlet可以方便地在Web应用中实现数据的导入导出。理解并熟练使用POI API,能够极大地提高开发效率,并提升应用的功能性。
总结,Spring Cloud 结合Apache POI为开发者提供了强大的文档生成能力,使得在微服务架构中处理Word模板和数据填充变得高效且灵活。理解并熟练掌握这些技术,可以帮助我们在实际项目中更好地满足业务需求,提升用户...
总结起来,Java结合Apache POI能有效处理Excel文件,无论是上传后的解析、数据转换,还是将数据导出为Excel文件,都能高效完成。这使得POI成为Java开发者处理Excel操作的首选工具。在实际开发过程中,根据项目需求,...
总结起来,结合Java JSP、Apache POI和适当的文件上传处理库,我们可以构建一个功能齐全的系统,允许用户上传Excel文件,系统将文件保存在服务器上,然后用户可以选择下载。同时,通过Apache POI,我们可以轻松地...
总结起来,"SpringMvc+POI的Excel文件导入导出"涉及到的关键技术包括Spring MVC的文件上传处理、Apache POI的Excel读写操作、以及模板填充和导出。通过熟练掌握这些技术,开发者能够高效地处理企业级应用中的Excel...
Apache POI是一个流行的开源库,主要用于处理Microsoft Office格式的文件,如Word(.doc, .docx)、Excel(.xls, .xlsx)和PowerPoint(.ppt, .pptx)。在Java开发环境中,POI库提供了API,使得开发者能够创建、读取...
总结一下,本教程的目的是教你如何在SSM框架下利用Apache POI实现Excel的导入导出功能,通过这个过程,你可以学习到如何结合SpringMVC的Controller、Service层以及POI库来处理文件操作,同时提升对SSM框架和Excel...
总结来说,`java 基于poi的excel操作工具类` 提供了全面的Excel操作功能,能够帮助开发者便捷地处理Excel文件,无论是从文件系统导入数据,还是向服务器存储文件,或者是通过HTTP响应返回Excel流。Apache POI库的...