案例使用的框架:jsp+spring+mybaties

<form id="importForm" name="importForm" method="post" target="win" action="importExcel.ht" enctype="multipart/form-data">

<div class="row">

<table id="tableid" class="table-detail" cellpadding="0" cellspacing="0" border="0">

<tr>

<th width="22%">选择文件:</th>

<td width="78%"><input type="file" size="40" name="xmlFile" id="xmlFile"/></td>

</tr>

</table>

</div>

<input type="hidden" name="rq" value="${rq}">

</form>

后台代码

@RequestMapping("importExcel")

@Action(description="导入Excel弹窗")

public void importExcel(MultipartHttpServletRequest request,HttpServletResponse response) throws Exception

{

String rq=request.getParameter("rq");

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

MultipartFile fileLoad = request.getFile("xmlFile");

ResultMessage resultMessage = null;

try {

String fileType = fileLoad.getOriginalFilename().substring(fileLoad.getOriginalFilename().lastIndexOf(".") + 1, fileLoad.getOriginalFilename().length());

Workbook wb = null;

if (fileType.equals("xls")) {

wb = new HSSFWorkbook(fileLoad.getInputStream());

} else if (fileType.equals("xlsx")) {

wb = new XSSFWorkbook(fileLoad.getInputStream());

} else {

throw new Exception("读取的不是excel文件");

}

//读取了模板内所有sheet内容

HSSFSheet sheet = (HSSFSheet) wb.getSheetAt(0);

HSSFCell cell0 = null;

HSSFCell cell1 = null;

Map<String, String> map = new HashMap<String, String>();

//读取excel,处理自己的业务

StringBuffer buf= new StringBuffer();

for(int i=2;i<=97;i++){

cell0 = sheet.getRow(i).getCell(0);

cell1 = sheet.getRow(i).getCell(1);

String key = cell0.getStringCellValue().replace(":", "");

String val = cell1.getStringCellValue();

if(key.startsWith("0")){

key = key.substring(1,key.length());

}

key = "v"+key;

map.put(key, val);

}

String value = map.toString().replace("=", ":");

LoadDate ld = new LoadDate();

ld.setValue(value);

ld.setRq(sdf.parse(rq));

ld.setSbzt("未上报");

for(int i=98;i<=102;i++){

cell0 = sheet.getRow(i).getCell(0);

cell1 = sheet.getRow(i).getCell(1);

String key = cell0.getStringCellValue();

String val = cell1.getStringCellValue();

if("高峰电量".equals(key)){

ld.setYcgfdl(Long.parseLong(val));

}else if("全天电量".equals(key)){

ld.setYcqdl(Long.parseLong(val));

}else if("错峰电力".equals(key)){

ld.setYccfdLi(Long.parseLong(val));

}else if("错峰电量".equals(key)){

ld.setYccfdLl(Long.parseLong(val));

}else if("低谷电量".equals(key)){

ld.setYcdgdl(Long.parseLong(val));

}

}

Long id = UniqueIdUtil.genId();

ld.setId(id);

ld.setSbzt("未上报");

loadDateService.add(ld);

String result="导入数据成功";

if(result.contains("成功")){

resultMessage = new ResultMessage(ResultMessage.Success, "导入成功!");

}else{

resultMessage = new ResultMessage(ResultMessage.Fail, result);

}

writeResultMessage(response.getWriter(), resultMessage);

} catch (Exception ex) {

ex.printStackTrace();

String str = MessageUtil.getMessage();

ex.getLocalizedMessage();

if (StringUtil.isNotEmpty(str)) {

resultMessage = new ResultMessage(ResultMessage.Fail,"导入失败请检查导入的Excel是否正确:" + str);

response.getWriter().print(resultMessage);

} else {

String message = ExceptionUtil.getExceptionMessage(ex);

resultMessage = new ResultMessage(ResultMessage.Fail, "导入失败请检查导入的Excel是否正确");

response.getWriter().print(resultMessage);

}

}

}

个人经验总结

导入报版本不匹配问题

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

MultipartFile fileLoad = request.getFile("xmlFile");

try {

String fileType = fileLoad.getOriginalFilename().substring(

fileLoad.getOriginalFilename().lastIndexOf(".") + 1,

fileLoad.getOriginalFilename().length());

Workbook wb = null;

if (fileType.equals("xls")) {

try {

//07+版本

wb = new HSSFWorkbook(fileLoad.getInputStream());

} catch (Exception e) {

//03版

wb = new XSSFWorkbook(fileLoad.getInputStream());

}

} else if (fileType.equals("xlsx")) {

wb = new XSSFWorkbook(fileLoad.getInputStream());

} else {

throw new Exception("读取的不是excel文件");

}

java poi导入Excel(个人代码)的更多相关文章

  1. 在java poi导入Excel通用工具类示例详解

    转: 在java poi导入Excel通用工具类示例详解 更新时间:2017年09月10日 14:21:36   作者:daochuwenziyao   我要评论   这篇文章主要给大家介绍了关于在j ...

  2. java poi 导入excel

    最近项目需要导入excel,网上有很多例子,自己整合记录下,兼容2003和2007,暂时没有添加图片处理功能. 所需jar包  http://pan.baidu.com/s/1sjPuWDR pack ...

  3. Java POI导入Excel文件

    今天在公司需要做个导入Excel文件的功能,所以研究了一下,参考网上的一些资料总算是做出来了,在此记录一下防止以后忘记怎么弄. 本人用的是poi3.8,所以需要的JAR包如下: poi-3.8.jar ...

  4. 解决java POI导入Excel超时问题

    由于要导入大量数据,后台会耗费很长时间,导致超时. 本项目前端request.js中设定的超时时间为150s. const service = axios.create({ baseURL: base ...

  5. java poi导入EXCEL xls文件代码

    /** * */ package com.bn.car.common.report.excel; import java.io.FileInputStream; import java.io.IOEx ...

  6. java poi操作excel示例代码

    import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io ...

  7. Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)

    ava 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包) 假设现在要做一个通用的导入方法: 要求: 1.xml的只定义数据库表中的column字段,字段类型,是否非空等条件 ...

  8. java POI创建Excel示例(xslx和xsl区别 )

    Java用来处理office类库有很多,其中POI就是比较出名的一个,它是apache的类库,现在版本到了3.10,也就是2014年2月8号这个版本. 在处理PPT,Excel和Word前,需要导入以 ...

  9. 重构:以Java POI 导出EXCEL为例

    重构 开头先抛出几个问题吧,这几个问题也是<重构:改善既有代码的设计>这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的 ...

随机推荐

  1. Maven & Gradle 如何从中央仓库下载Jar包

    https://mvnrepository.com/    maven 中央仓库 gradle可以轻松的完成Android项目对第三方jar包文件的依赖下载,再也不需要我们手动下载jar包,然后拷贝到 ...

  2. [原]openstack-kilo--issue(二十)External network cannot is not reachable associate Port

    issue==== INFO neutron.api.v2.resource [req-79a36d02-114b--b9ed-0a10c6d69451 ] update failed (client ...

  3. 配置nginx实现windows/iis应用负载均衡

    nginx是俄罗斯人开发的一款跨平台的高性能HTTP和反向代理服务器,可以利用它实现web应用服务器的负载均衡. 反向代理是指将用户请求通过代理服务器转发给后端内部网络的应用服务器,典型的应用比如配置 ...

  4. Spring学习笔记--代理

    静态代理 1.静态代理的角色分析(UML画图推荐使用StarUML软件) 抽象角色---一般使用接口或者抽象类来实现. 真实角色---被代理的角色. 代理角色---代理真实角色—代理真是角色后一般会做 ...

  5. Intersection Observer API 可以让你知道被观察元素何时进入或退出浏览器的视口

    google 文档 https://developers.google.cn/web/updates/2016/04/intersectionobserver MDN 文档 https://devel ...

  6. 解决css设置背景透明,文字不透明

    设置元素的透明度:  -moz-opacity:0.8; /*在Firefox中设置元素透明度  filter: alpha(opacity=80); /*ie使用滤镜设置透明   但是当我们对一个标 ...

  7. hdparm命令(转)

    转自:http://man.linuxde.net/hdparm hdparm命令提供了一个命令行的接口用于读取和设置IDE或SCSI硬盘参数. 语法 hdparm(选项)(参数) 选项 -a< ...

  8. db2 backup export

    备份命令: db2 backup db test to /db2data/ 监控备份进度: db2 list utilities show detail <-进度 检测备份文件的有效性: db2 ...

  9. 泡泡一分钟:Automatic Parameter Tuning of Motion Planning Algorithms

    Automatic Parameter Tuning of Motion Planning Algorithms 运动规划算法的自动参数整定 Jos´e Cano, Yiming Yang, Brun ...

  10. [daily] 内存越界的分析与定位

    valgrind 自不必说 1.  Address Sanitize 很好有,只需要在gcc编译的时候,加上选项 -fsanitize=address 它的工程:https://github.com/ ...