- 浏览: 756734 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 146最近闲来无事,突发奇想,将自己的选股思路自动化,计算机化。。 ... -
rpm安装jdk,设置环境变量
2019-05-12 22:49 6011、将jdk的rpm包拷贝到 ... -
java安全编码
2019-01-18 22:31 443软件安全问题,一般 ... -
生产者消费者
2018-07-01 21:33 402package function.thread; i ... -
打印mybatis的执行语句到控制台和文件
2017-12-13 15:11 781log4j.rootLogger=INFO,CONSOLE, ... -
java中类的加载顺序介绍(ClassLoader)
2017-11-14 11:41 7841、ClassNotFoundExcetpion 我们在 ... -
守护线程
2017-11-13 16:40 404对于线程,有个守护的线程的概念。如何理解呢?比如A线程里,n ... -
类加载机制及反射
2017-09-24 08:45 555一、Java类加载机制 ... -
java+selenium2 自动化测试框架
2017-09-15 09:36 987package web.selenium2; ... -
JMS实例
2017-08-21 15:40 4381. JMS架构 Java 消息服务(Java M ... -
linux设置java环境
2017-08-07 16:47 421linux配置java环境变量(详细) 一. 解压安装jdk ... -
分布式
2017-07-19 12:12 416转载请注明出处:http://blog.csdn.net/l ... -
tomcat+nginx+redis
2017-07-18 16:46 408应用系统的基本架构: -
java调用远程机器的shell脚本
2017-07-14 12:19 1534此程序的目的是执行远程机器上的Shell脚本。 【环境参数 ... -
生产者消费者进阶(带有condition)
2017-05-09 17:56 552package function.thread; ... -
多线程之 CountDownLatch
2017-05-01 13:01 488package function.thread; ... -
判断服务器类型
2017-04-12 10:52 453开发时一般用tomcat,然后在测试环境发布时使用的是web ... -
IE的不同文本浏览模式页面显示
2017-04-11 14:34 496现象描述:最近在遇到的问题就是在在Chrome,火狐页面都正 ... -
java中Filter、Servlet、Listener的学习
2017-03-29 21:52 4251、Filter的功能filter功能,它使用户可以改变一个 ... -
高并发,线程池
2017-03-29 21:52 10661.高并发的内容 Zookee ...
相关推荐
java excel 上传 处理 模板
java版excel上传文件,对excel的数据进行处理。
这是一个在java中实现对excel表格的上传下载的一个处理,很基础的内容
Excel上传并解析java对象Excel上传并解析java对象Excel上传并解析java对象
java 将excel里面的数字时间转化为准确的时间格式;具体来源有点忘记了,实现是摘自了开源代码里面的一段。
Excel上传解析组件,可以直接拿来调用,很有技术含量,值得学习
使用apach poi 导出Excel,可直接在项目中使用使用apach poi 导出Excel,可直接在项目中使用使用apach poi 导出Excel,可直接在项目中使用
JAVA 中excel的上传下载
java上传并读取excel工具类 涉及到MultiFile转FIle 以及多个sheet页
上传本地文件到服务器进行解析,通过poi继续操作数据,易懂简单。
使用jdbc封装类,进行excel文件的上传和下载
POI实现的excel的上传下载
java版excel解析,并上传至mysql数据库。已包含jar包,数据库sql语句等,eclipse直接运行client.java
java+Excel+使用方法,java上传excel 详解,java上传excel 实例分析
java实现在Excel中插入图片有时碰到下载excel中加入图片或已经制作好的图章。
Java编程调用PageOffice实现从空白的excel文件动态生成excel表格,设置公式并填充数据。 集成PageOffice不但能够实现在线编辑、保存真正的Office文档,而且还可以轻松实现Word、Excel文档的动态数据填充、格式控制和...
生成excel并上传到S3.不需要真正的生成excel文件,只需要拿到byte
excel文件上传(代码)! excel文件上传(代码)! excel文件上传(代码)! excel文件上传(代码)! excel文件上传(代码)! excel文件上传(代码)!
struts+hibernate实现excel导入数据库 注意:Excel导入是指读服务器端的数据,也就是说,如果想用客户端的Excel是需要把Excel文件先上传到服务器上的,然后再导入,我也是前几天才发现的。
java对Excel表格数据处理并以List集合返回(只要传Excel文件路径即可)