- 浏览: 787632 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (981)
- javascript (102)
- java (212)
- JQuery (81)
- 幽默笑话 (2)
- 只言片语 (6)
- 开发小记 (283)
- Hibernate (17)
- DWR (4)
- SQL (10)
- spring-ibatis (8)
- linux (24)
- Struts1 (8)
- Struts2 (16)
- spring (42)
- Mybatis (16)
- css (18)
- servlet (8)
- jdbc (4)
- jsp (1)
- spring-jdbc (2)
- FreeMarker (2)
- MySQL (24)
- JQuery-Grid (7)
- jstl (5)
- 正则表达式 (1)
- 面试集锦 (86)
- unix (18)
- 开发工具 (23)
- ajax (5)
- webservice (4)
- log4j (3)
- oracle (15)
- extjs (14)
- 其他 (9)
- 优秀技术参考地址 (1)
- 性能 (3)
- 数据库 (25)
- 算法 (15)
- 设计模式 (10)
- Python (3)
- AIX (5)
- weblogic (1)
- shell (14)
- quartz (5)
- 图形文件FusionCharts (1)
- Websphere (4)
- 转载 (5)
- hadoop (1)
- highchart (24)
- perl (22)
- DB2 (7)
- JBoss (1)
- JQuery Easy UI (9)
- SpringMVC (5)
- ant (5)
- echart (9)
- log4J配置 (3)
- 多线程 (10)
- 系统架构 (7)
- nginx (3)
- loadrunner1 (1)
- 分布式 (1)
- Dubbo (1)
- Redis (2)
- JMS (4)
- 自动化测试 (3)
- Spring循环依赖的三种方式 (1)
- spring-boot (2)
- 高级测试 (9)
- github (2)
- sonar (1)
- docker (6)
- web前端性能优化 (1)
- spring-aop (6)
- rabbit (1)
- ELK (1)
- maven (1)
- minio (1)
最新评论
-
zengshaotao:
jstl1point0 写道很好啊,如果有带Session会话 ...
Nginx+Tomcat搭建高性能负载均衡集群 -
jstl1point0:
很好啊,如果有带Session会话的怎么搞呢
Nginx+Tomcat搭建高性能负载均衡集群
对于上传和下载excel文件,程序开发里经常用到,这里只做简要总结:
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if(isMultipart == false) {
throw new IOException("HTTP request does not contains multipart content!");
}
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(10240);
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> items = upload.parseRequest(request);
Iterator<FileItem> iter = items.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
if (item.isFormField() == false) {
//String fieldName = item.getFieldName();
//boolean isInMemory = item.isInMemory();
//item may return the absolute full path name. we only need the last name
String fileName = item.getName();
InputStream uploadedStream = item.getInputStream();
request.setAttribute("fileName", fileName);
request.setAttribute("inputStream", uploadedStream);
}
}
} catch (FileUploadException e) {
throw new IOException(e);
}
注意:这里的文件名是包含路径的,需要进行解析
int flag = fileName.lastIndexOf('/');
if(flag<0)flag = fileName.lastIndexOf('\\');
if(flag>=0)
return fileName.substring(flag+1)
else
return fileName;
有了文件名后,可以区分2003和2007及以后的版本了。
对于jxl,只能解析2003的版本。对于poi,两个版本都支持。但是对于非官方的excel文档,解析是有问题的
需要重新下载 poi-bin-3.8-20120326.zip文件,下载之后解压,拷贝相关的jar到lib目录即可。
public String upload() throws Exception{
XSSFWorkbook rwb = null;
HSSFWorkbook hwb = null;
InputStream io = (InputStream)request.getAttribute("inputStream");
String fileName = (String)request.getAttribute("fileName");
String fileExpName = fileName.substring(fileName.indexOf(".")+1);
if(Constant.EXCEL2003_EXTENSION.equals(fileExpName)){
versionFlag = Constant.EXCEL_VERSION_2003;
}else if(Constant.EXCEL2007_EXTENSION.equals(fileExpName)){
versionFlag=Constant.EXCEL_VERSION_2007;
}else{
request.setAttribute("resMsg","上传的文件格式应该是excel文件,请重新选择!");
return "success";
//throw new Exception("上传的文件格式不正确,请重新选择!");
}
List<PotentialCustomerInfoVO> potentialCustomerInfoList = new ArrayList<PotentialCustomerInfoVO>();
try{
if(Constant.EXCEL_VERSION_2007.equals(versionFlag)){
rwb = new XSSFWorkbook(io);
XSSFSheet sheet = rwb.getSheetAt(0);
//得到所有的行
int rows = sheet.getLastRowNum();
if(rows>10000){
request.setAttribute("resMsg","导入的数据不能超过一万条!!!");
return "success";
}
//得到excel数据
for(int i=2;i<=rows;i++){
XSSFRow row = sheet.getRow(i);
if(row !=null){
PotentialCustomerInfoVO pcv = new PotentialCustomerInfoVO();
int cols = row.getLastCellNum();
if(cols!=8){
request.setAttribute("resMsg","上传的excel文件第"+(i+1)+"行不能有空字段!");
return "success";
}
//读取列数
for (int k = 0; k < cols; k++) {
XSSFCell cell = row.getCell((short)k);
if (null != cell) {
String ret = changeToString(cell.getCellType(), cell);
switch(k){
case 0:
//车主姓名
pcv.setCustomerName(ret);
break;
case 1:
//证件类型
String tempValue = "";
if(Constant.CERTITYPE_TEXT_SFZ.equals(ret)){
tempValue = Constant.CERTITYPE_VALUE_SFZ;
}else if(Constant.CERTITYPE_TEXT_JGZ.equals(ret)){
tempValue = Constant.CERTITYPE_VALUE_JGZ;
}else if(Constant.CERTITYPE_TEXT_HZ.equals(ret)){
tempValue = Constant.CERTITYPE_VALUE_HZ;
}else if(Constant.CERTITYPE_TEXT_QT.equals(ret)){
tempValue = Constant.CERTITYPE_VALUE_QT;
}
pcv.setCertiType(tempValue);
break;
case 2:
pcv.setCertiCode(ret);
break;
case 3:
pcv.setLicenceNumber(ret);
break;
case 4:
pcv.setVin(ret);
break;
case 5:
pcv.setEngineNumber(ret);
break;
case 6:
pcv.setDriverNumber(ret);
break;
case 7:
pcv.setF_1(ret);
break;
default:
break;
}
}else{
//行内有空字段
request.setAttribute("resMsg","上传的excel文件第"+(i+1)+"行不能有空字段!");
return "success";
}
}
potentialCustomerInfoList.add(pcv);
}
}// for rows
}else if(Constant.EXCEL_VERSION_2003.equals(versionFlag)){
hwb = new HSSFWorkbook(io);
HSSFSheet sheet = hwb.getSheetAt(0);
//得到所有的行
int rows = sheet.getLastRowNum();
if(rows>10000){
request.setAttribute("resMsg","导入的数据不能超过一万条!!!");
return "success";
}
//得到excel数据
for(int i=2;i<=rows;i++){
HSSFRow row = sheet.getRow(i);
if(row !=null){
int cols = row.getLastCellNum();
if(cols!=8){
request.setAttribute("resMsg","上传的excel文件第"+(i+1)+"行不能有空字段!");
return "success";
}
PotentialCustomerInfoVO pcv = new PotentialCustomerInfoVO();
//读取列数
for (int k = 0; k < cols; k++) {
HSSFCell cell = row.getCell((short)k);
if (null != cell) {
String ret = changeToString(cell.getCellType(), cell);
switch(k){
case 0:
//车主姓名
pcv.setCustomerName(ret);
break;
case 1:
//证件类型
String tempValue = "";
if(Constant.CERTITYPE_TEXT_SFZ.equals(ret)){
tempValue = Constant.CERTITYPE_VALUE_SFZ;
}else if(Constant.CERTITYPE_TEXT_JGZ.equals(ret)){
tempValue = Constant.CERTITYPE_VALUE_JGZ;
}else if(Constant.CERTITYPE_TEXT_HZ.equals(ret)){
tempValue = Constant.CERTITYPE_VALUE_HZ;
}else if(Constant.CERTITYPE_TEXT_QT.equals(ret)){
tempValue = Constant.CERTITYPE_VALUE_QT;
}
pcv.setCertiType(tempValue);
break;
case 2:
pcv.setCertiCode(ret);
break;
case 3:
pcv.setLicenceNumber(ret);
break;
case 4:
pcv.setVin(ret);
break;
case 5:
pcv.setEngineNumber(ret);
break;
case 6:
pcv.setDriverNumber(ret);
break;
case 7:
pcv.setF_1(ret);
default:
break;
}
}else{
request.setAttribute("resMsg","上传的excel文件第"+(i+1)+"行不能有空字段!");
return "success";
}
}
potentialCustomerInfoList.add(pcv);
}
}
}
//对组装的list数据进行导入,也就是保存
}catch(Exception e){
e.printStackTrace();
request.setAttribute("resMsg","上传出错,请联系系统管理员!");
throw new Exception(e.getMessage());
}
return "success";
}
发表评论
-
选股神器
2022-08-20 15:07 204最近闲来无事,突发奇想,将自己的选股思路自动化,计算机化。。 ... -
rpm安装jdk,设置环境变量
2019-05-12 22:49 6331、将jdk的rpm包拷贝到 ... -
java安全编码
2019-01-18 22:31 481软件安全问题,一般 ... -
生产者消费者
2018-07-01 21:33 429package function.thread; i ... -
打印mybatis的执行语句到控制台和文件
2017-12-13 15:11 813log4j.rootLogger=INFO,CONSOLE, ... -
java中类的加载顺序介绍(ClassLoader)
2017-11-14 11:41 8171、ClassNotFoundExcetpion 我们在 ... -
守护线程
2017-11-13 16:40 433对于线程,有个守护的线程的概念。如何理解呢?比如A线程里,n ... -
类加载机制及反射
2017-09-24 08:45 585一、Java类加载机制 ... -
java+selenium2 自动化测试框架
2017-09-15 09:36 1017package web.selenium2; ... -
JMS实例
2017-08-21 15:40 4781. JMS架构 Java 消息服务(Java M ... -
linux设置java环境
2017-08-07 16:47 454linux配置java环境变量(详细) 一. 解压安装jdk ... -
分布式
2017-07-19 12:12 450转载请注明出处:http://blog.csdn.net/l ... -
tomcat+nginx+redis
2017-07-18 16:46 477应用系统的基本架构: -
java调用远程机器的shell脚本
2017-07-14 12:19 1591此程序的目的是执行远程机器上的Shell脚本。 【环境参数 ... -
生产者消费者进阶(带有condition)
2017-05-09 17:56 585package function.thread; ... -
多线程之 CountDownLatch
2017-05-01 13:01 521package function.thread; ... -
判断服务器类型
2017-04-12 10:52 488开发时一般用tomcat,然后在测试环境发布时使用的是web ... -
IE的不同文本浏览模式页面显示
2017-04-11 14:34 540现象描述:最近在遇到的问题就是在在Chrome,火狐页面都正 ... -
java中Filter、Servlet、Listener的学习
2017-03-29 21:52 4551、Filter的功能filter功能,它使用户可以改变一个 ... -
高并发,线程池
2017-03-29 21:52 10971.高并发的内容 Zookee ...
相关推荐
本篇文章将深入探讨如何使用Java进行Excel文件的上传和处理,主要围绕标题“java excel 上传 处理 模板”展开,结合标签“java”、“excel”和“上传”,我们将详细讲解相关的知识点。 首先,Java处理Excel文件通常...
"java Excel上传 Excel数据处理"这个主题涵盖了如何使用Java来接收并处理Excel文件的关键知识点。以下是对这些核心概念的详细阐述: 1. **Maven依赖**:在Java项目中处理Excel文件,通常会用到Apache POI库。首先,...
这是一个在java中实现对excel表格的上传下载的一个处理,很基础的内容
在IT行业中,Excel上传并解析Java对象是一项常见的数据处理任务,尤其在数据分析、报表生成以及数据导入导出等场景中尤为常见。这个过程涉及到的主要技术包括文件上传、Excel读取、数据转换以及Java对象映射。下面将...
java 将excel里面的数字时间转化为准确的时间格式;具体来源有点忘记了,实现是摘自了开源代码里面的一段。
在Java开发中,上传并解析Excel文件是一种常见的需求,特别是在数据处理、报表导入或系统集成等场景。本篇文章将深入探讨如何实现这个功能,主要涉及的技术包括文件上传、Excel解析以及数据库操作。 首先,我们需要...
"Excel上传解析组件"是一种专为处理Excel文件上传和解析任务设计的技术组件。它简化了在应用程序中处理Excel数据的过程,使得开发人员可以快速、高效地读取、写入或操作Excel表格数据,而无需深入了解Excel文件格式...
标题 "上传下载Excel的Demo,java代码" 描述了这个示例项目的核心功能,即在Java环境下处理Excel文件的上传和下载操作。这通常涉及到Web应用程序中的数据导入导出功能,便于用户通过浏览器进行数据的交互。在这个项目...
本篇文章将深入探讨如何使用Java实现Excel文件的上传和读取,重点关注`MultiFile`转换为`File`以及处理多Sheet页的技巧。 首先,我们需要了解Java中处理Excel的库。Apache POI是一个广泛使用的开源库,它提供了API...
在Java开发中,处理Excel文件的上传和下载是常见的需求,尤其在数据...通过以上步骤和技巧,你可以在Java项目中实现高效且健壮的Excel上传和下载功能。理解这些核心概念和技术,对于处理Java中的Excel操作至关重要。
Excel上传通常涉及到以下步骤: - **文件上传接收**:首先,你需要在服务器端设置一个接口,通过HTTP请求接收用户上传的Excel文件。这可以通过Servlet或Spring MVC等框架实现。 - **解析文件**:接收到文件后,使用...
Java基于Apache POI-3.7的Excel上传工具包是一个实用的库,它允许开发者在Java应用程序中方便地处理Excel文件。Apache POI是Apache软件基金会的一个开源项目,专门用于读写Microsoft Office格式的文件,其中包括...
excel文件上传(代码)! excel文件上传(代码)! excel文件上传(代码)! excel文件上传(代码)! excel文件上传(代码)! excel文件上传(代码)!
在Java编程环境中,将Excel数据解析并上传到MySQL数据库是一项常见的任务,特别是在数据处理和导入导出场景下。本项目提供了完整的解决方案,包括所需的jar包、数据库SQL语句以及一个可直接在Eclipse环境中运行的...
在Java编程环境中,将Excel数据上传到Oracle数据库是一项常见的任务,尤其在数据处理和系统集成中。本项目涉及的关键技术包括Java、jxl库(用于处理Excel文件)和Oracle数据库的连接与操作。以下是对这些知识点的...
在Java编程中,解析Excel文件是一项常见的任务,特别是在数据处理、报表生成或数据分析等领域。Excel文件格式主要有两种:老式的`.xls`(基于BIFF格式)和较新的`.xlsx`(基于Open XML标准)。本篇将详细介绍如何...
生成excel并上传到S3.不需要真正的生成excel文件,只需要拿到byte
在“java poi excel上传下载”这个场景中,我们可以讨论以下几个关键知识点: 1. **Java POI API**:POI 提供了一套完整的API,允许开发者创建、修改和显示Excel工作簿、工作表、单元格等。主要类包括`HSSFWorkbook...
Java编程调用PageOffice实现从空白的excel文件动态生成excel表格,设置公式并填充数据。 集成PageOffice不但能够实现在线编辑、保存真正的Office文档,而且还可以轻松实现Word、Excel文档的动态数据填充、格式控制和...
在Java编程环境中,实现将图片插入到Excel文件中是一项常见的任务,特别是在数据分析、报表生成或者自动化办公场景下。本文将详细讲解如何使用Java来完成这一功能,主要涉及到Apache POI库的应用。 Apache POI是一...