上次项目开发过程中需要实现通过excel文件进行导入。我才用了WorkbookFactory方法,因为导入的数据需要处理,所以在程序中我使用List对读入的数据进行了分类。所以大家对数据处理可以不用关心,把重点放在WorkbookFactory的使用方法上。今天把这个方法分享给大家,话不多说,直接上代码。

java端代码

public String importFile(HttpServletRequest request,HttpServletResponse response){

Map returnMap = new HashMap();

//需要处理的数据

List> disposeList = new ArrayList>();

//不需要处理的数据

List> noDisposeList = new ArrayList>();

boolean errorFlag = false;

try {

//SpringMVC 中处理表单上传的方法

MultipartResolver resolver=new CommonsMultipartResolver(request

.getSession().getServletContext());

MultipartHttpServletRequest multipartRequest = resolver

.resolveMultipart(request);

Iterator iter=multipartRequest.getFileNames();

MultipartFile mf = null;

while (iter.hasNext()) {

mf=multipartRequest.getFile(iter.next().toString());

}

org.apache.poi.ss.usermodel.Workbook wb = WorkbookFactory.create(mf.getInputStream());

// 创建临时目录,存放此次上传的文件,此处可以直接给一个默认路径

String tempFolder = getTempFolder("wtgl");

File file = new File(tempFolder);

file.mkdir();

mf.transferTo(new File(tempFolder+File.separator+mf.getOriginalFilename()));

// 生成临时文件

//tbDataTaskServiceImpl.scSjData(tempFolder, mf.getOriginalFilename());

Sheet sheet = wb.getSheetAt(0);

Row row = null;

/**这里是关键点,对excel以行为单位取出每一个单元格中的值。补充一点,

*如果excel表中的单元格被单击过,但是没有值会取出null,但是如果单元格没有

*值也没有被点击过此时或报错。

*/

for (int i=sheet.getFirstRowNum()+1; i

Map disposeMap = new LinkedHashMap();

Map noDisposeMap = new LinkedHashMap();

row= sheet.getRow(i);

if(row!=null){

Cell col1 = row.getCell(0);

Cell col2 = row.getCell(1);

Cell col3 = row.getCell(2);

Cell col4 = row.getCell(3);

Cell col5 = row.getCell(4);

Cell col6 = row.getCell(5);

Cell col7 = row.getCell(6);

Cell col8 = row.getCell(7);

Cell col9 = row.getCell(8);

noDisposeMap.put("WTBH", col1.toString());

noDisposeMap.put("WTZT", col2.toString());

//noDisposeMap.put("ZPSJ_DATA", col6.toString());

noDisposeMap.put("CLSJ_DATA", col8.toString());

noDisposeMap.put("CLRMC", col9.toString());

disposeMap.put("SBDS", col3.toString());

disposeMap.put("YJCD", col4.toString());

disposeMap.put("LCHJ", col5.toString());

disposeMap.put("CLJG", col7.toString());

}

noDisposeList.add(noDisposeMap);

disposeList.add(disposeMap);

}

Boolean result = commonService.importWtIntoSql(disposeList, noDisposeList);

if(result){

returnMap.put("result", true);

returnMap.put("message", "123456");

}else{

returnMap.put("result", false);

}

} catch (Exception e) {

errorFlag = true;

e.printStackTrace();

returnMap.put("result", false);

returnMap.put("message", "发生未知错误,上传失败。");

} finally {

String tempFolder = CommonUtils.getTempFolder("wtgl");

CommonUtils.deletefile(tempFolder);

}

if (errorFlag) {

// 解决平台service里报错导致错误信息无法返回到页面的问题

response.setContentType("text/xml;charset=UTF-8");

try {

response.getWriter().print(

JSONObject.fromObject(returnMap).toString());

} catch (IOException e1) {

e1.printStackTrace();

}

} else {

}

return JsonBinder.getJsonBinder().toJson(returnMap.get("result").toString());

}

}

/**

* 获取临时文件夹

*

* @return

*/

public static String getTempFolder(String filePath) {

return Platform.getPlatform().getBaseDir() + filePath

+ File.separator;

}

前端JS代码

function importFunction(){

importFile({

url: 'common/contCommon/importFile.do',

multiple: false,

beforeSend: function(file){

var h = document.body.scrollHeight + "px";

//实现弹窗选择文件页面

$("

.css({display:"block",'background-color':'#000000',

width:"100%",height:h,

'z-index':100000,

opacity:0.2})

.appendTo("body");

$("

" +

"

正在导入文件,请稍后……

").appendTo("body")

.css({display:"block",

'z-index':100000,

'position': 'fixed',

'background-color': '#FFFFFF',

left:($(document.body).outerWidth(true) - 190) / 2,

top:(document.body.clientHeight - 35) / 2,

padding: "25px 20px 52px 10px",

height: "25px"});

forbiddenBodyRightClick();

},

callback: function(res){

res = JSON.parse(res);

if(res.result){

$('.datagrid-mask-msg').remove();

$('.datagrid-mask').remove();

artDialog({content:'导入成功!',time:2.0});

queryGridData(param);

}else{

$('.datagrid-mask-msg').remove();

$('.datagrid-mask').remove();

artDialog({content:'导入失败!',time:2.0});

}

},

uploading: function(pre){

}

});

}

此处只是粘贴了主要代码,如果有什么不理解的可以留言,看到后会回复的。

PS:欢迎大家批评指正。

java公共excel导入_Java实现Excel的导入功能相关推荐

  1. java excel表格导入_java中excel表格导入实例

    展开全部 需要32313133353236313431303231363533e59b9ee7ad9431333264623165导入jxl.jar (在网上可以下载,然后放到lib文件夹中) 开放分 ...

  2. java方法有excel实现_Java实现EXCEL操作(1)

    Java实现EXCEL操作(1) 1.实现方法: 现在有三种方法去实现:jxl .poi . FastExcel:97~2003 在这里只讲poi实现方法.poi的包可以去Apache官网上去下载:h ...

  3. java拆分单元格_Java 拆分Excel单元格数据为多列

    一.概述及使用工具 在Excel表格里面,可设置将单元格中的文本数据按分隔符拆分为多列,下面通过Java程序来介绍具体实现方法.这里使用Free Spire.XLS for Java(免费版)来实现数 ...

  4. java excel 筛选_Java 在Excel中设置筛选器

    在日常办公中,Excel工作表通常含有大量不同类型的数据,当我们想方便,快捷地从中筛选并显示所需数据时,则需用到筛选器这一工具.本文就将通过使用Java程序来演示如何设置Excel筛选器. Jar文件 ...

  5. java导出excel报表_java生成excel报表文件示例

    此次简单的操作将数据从数据库导出生成excel报表以及将excel数据导入数据库 首先建立数据库的连接池: package jdbc; import java.io.FileInputStream; ...

  6. Java 散点图 数据库 代码_Java 创建Excel散点图

    散点图是指在回归分析中,数据点在直角坐标系平面上的分布图,表示因变量随自变量而变化的大致趋势,常用于比较跨类别的聚合数据.在excel中,支持创建散点图来实现数据分析,本文将通过java程序代码示例来 ...

  7. java 表格 列删除_Java 删除Excel表格中的空白行或列

    Java 删除Excel表格中的空白行和列 本文介绍在Java程序中如何来删除Excel表格中多余的空白行或者列. 使用工具:Free Spire.XLS for Java (免费版) Jar获取及导 ...

  8. java excel 列_Java 删除Excel中的行和列

    Excel是日常工作中常用的办公软件之一.在制作表格的时候,有时需要在工作表中插入一个或多个行和列,同时也会遇到需要将工作表中多余的行或列删除的情况.本文就将通过使用Java程序来演示如何删除Exce ...

  9. java excel 背景_Java设置Excel背景

    码农公社  210.net.cn  210是何含义?10月24日是程序员节,1024 =210.210既 210 之意. Java 设置Excel表格颜色背景(即指定单一颜色作为背景色).图片背景(即 ...

  10. java excel 操作方式_Java读写Excel基本操作

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. 接口: HSSF - Microsoft Exce ...

最新文章

  1. 无法找到python第三方库的处理方法
  2. PAT甲级1060 Are They Equal:[C++题解]字符串处理、有效数字、代码简洁!!!
  3. 拉索检测机器人_昌都斜拉索锈蚀检测系统,斜拉索检测机器人推荐
  4. 133. Clone Graph 克隆图
  5. 如何给Android添加可视化工具,可视化实现在手机上抓包 方便调试 OkNetworkMonitor...
  6. Quartz使用总结、Cron表达式
  7. iOS UIWebView URL拦截
  8. 图像识别(2)—验证码篇
  9. GitHub改为token验证后,如何提交代码?
  10. springboot中关于springMvc默认配置,配置扩展,全面接管
  11. sublime text3的一些小技巧记录(配gif图)
  12. es if语法 script_Elasticsear7.x DSL语法之文档管理
  13. 数据库系统及应用——班级管理系统
  14. 安卓投屏大师_玩转手机投屏,我推荐三款不一样的投屏工具!
  15. python进阶例题
  16. 企业OA办公系统选型技巧实用指南
  17. java楼盘管理系统_课内资源 - 基于Java面向对象开发的房屋中介管理系统
  18. 第十二届蓝桥杯时间显示问题 python解法
  19. [国家集训队]矩阵乘法 整体二分
  20. 金融市场一周简报(2017-08-18)

热门文章

  1. Unix Domain Socket 域套接字实现
  2. 一起谈.NET技术,Silverlight 游戏开发小技巧:动感小菜单
  3. 【重学Vue】数据响应原理真的是双向绑定吗?
  4. wordpress-4.7.2-zh_CN页面加载慢
  5. python中子类调用父类的初始化方法
  6. discuz手机版模板开发
  7. 【原创翻译】如何命名变量
  8. 通过Samba实现Win/Mac访问Linux
  9. [转]独立窗口打开多个Excel文件
  10. 闲话能力管理(Capacity Management)