标签:

前言

先介绍下项目的开发环境,采用java开发语言进行开发,前台UI使用的是EasyUI框架,接下来是SpringMvc与Ejb结合来开发,整个项目管理采用的是Maven管理,服务器用的是Jboss6.2.0企业版。

正文

配置

对于Excel上传文件我们首先要引入commons-fileupload.jar包,由于我们的项目采用Maven进行项目管理,所以对于jar包的引入是在pom.xml文件中添加的依赖,添加commons-fileupload.jar的坐标:

commons-fileupload

commons-fileupload

1.3.1

由于后台代码的ExcelUtil工具类所在的项目不再当前的web项目中,而在itoo-exam-too项目中,因此我们需要将ExcelUtil工具类所在的itoo-exam-too项目进行引入,也就是在maven的pom.xml文件中添加itoo-exam-too的项目依赖:

com.tgb

itoo-exam-tool

0.0.1-SNAPSHOT

接下来SpringMvc的配置文件也需要做些配置,这样可以将前台文件进行解析,传到后台:

class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

具体实现

Excel的导入我们可以进行分解,包括三个步骤:

1.上传Excel文件

2.读取Excle文件中的数据,将Excle数据转化成list集合

3.将list集合存入数据库

首先我们开始看我们前台easyui上传Excle文件的代码,采用的是一个form表单,表单里包含一个easyui的上传文件的控件easyui-filebox:

选择文件: 

导入题库

前台代码比较简单,我们使用是EasyUI的filebox进行文件上传,这里需要注意的是form表单的enctype属性必须是""multipart/form-data",接下来我们用js代码对Excle的格式进行基本的校验,然后将文件提交到后台Controller,

 //导入excel

function uploadExcel(){

//得到上传文件的全路径

var fileName= $('#uploadExcel').filebox('getValue');

//获取题型

var id= $('#questionType').combobox('getValue');

var questionTypes=encodeURI(id);

if(questionTypes !=""){

//进行基本校验

if(fileName==""){

$.messager.alert('提示','请选择上传文件!','info');

}else{

//对文件格式进行校验

var d1=/\.[^\.]+$/.exec(fileName);

if(d1==".xls"){

//获取题型

var id= $('#questionType').combobox('getValue')

var questionTypes=encodeURI(id);

//获取课程

var courseTypeId =$('#courseTypeId').combobox('getValue')

var courseType=encodeURI(courseTypeId);

//提交表单

document.getElementById("questionTypesManage").action="${pageContext.request.contextPath}/leadtoQuestionTypes/leadInExcelQuestionBank?questionType="+questionTypes+"&courseType="+courseType;

document.getElementById("questionTypesManage").submit();

$.messager.alert('提示','操作成功!','info');

}else{

$.messager.alert('提示','请选择xls格式文件!','info');

$('#uploadExcel').filebox('setValue','');

}

}

}else{

$.messager.alert('提示','请选择课程题型!','info');

}

}

前台代码完毕以后,我们接下来看controller的代码,这里需要注意的是,前台easyui的filebox的name标签的名字是作为参数传到后台的,后台以流的形式接收到前台传过来的excle文件,我们使用Excle工具类将Excle转换成list集合,最后将list集合保存到数据库中。我们看下后台的代码实现:

/**

* 导入题库Excel

*

* @param uploadExcel 上传的excel文件

*

* @param request 请求

*

* @param resposne 响应

*

* @throws UnsupportedEncodingException 编码异常

*

*/

@RequestMapping("/leadInExcelQuestionBank")

public String leadInExcelQuestionBank(

@RequestParam("uploadExcel") CommonsMultipartFile uploadExcel,

HttpServletRequest request, HttpServletResponse response)

throws UnsupportedEncodingException {

// 获取前台传来的题型和课程

String questionType = request.getParameter("questionType").trim();

String courseType = request.getParameter("courseType").trim();

String questionTypeNameId = new String(

questionType.getBytes("iso-8859-1"), "utf-8");

String courseTypeId = new String(courseType.getBytes("iso-8859-1"),

"utf-8");

InputStream in;

boolean flag = false;

try {

// 获取前台exce的输入流

in = uploadExcel.getInputStream();

//获取sheetName名字

String sheetName = leadToInQuestionTypesManageBean.getSheetName(questionTypeNameId);

// excel的表头与文字对应,获取excel表头

LinkedHashMap map = leadToInQuestionTypesManageBean.getMapLeadInExcelQuestionBank(questionTypeNameId);

//获取组合excle表头数组,防止重复用的

String[] uniqueFields =leadToInQuestionTypesManageBean.getUniqueFields(questionTypeNameId);

//获取需要导入的具体的表

Class class1=leadToInQuestionTypesManageBean.getClassName(questionTypeNameId);

//excel转化成的list集合

List list = null;

try {

//调用excle共用类,转化成list

list=ExcelUtil.excelToList(in, sheetName, class1, map, uniqueFields);

} catch (ExcelException e) {

e.printStackTrace();

}

//保存实体集合

flag= leadToInQuestionTypesManageBean.leadInExcelQuestionBank(questionTypeNameId, courseTypeId, list);

} catch (IOException e1) {

e1.printStackTrace();

}

System.out.println("执行结果:" + flag);

return "/LeadToQuestionTypeBank";

}

到这里关于Excle导入就已经完成了,关于Excle的导出,和ExcelUtil类的编写,我们下篇文章继续,敬请期待。

标签:

java maven导入导出_Java +EasyUI+SpringMvc实现Excle导入导出(上)相关推荐

  1. java大文件解析_java大文件(百M以上)的上传下载实例解析

    javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求 1.通过form表单向后端发送请求 Save 改进后的代码不需要for ...

  2. java excel 导入导出_java中excel文件的导入和导出

    如有需要可以加我Q群[308742428]大家一起讨论技术,提供技术支持. 后面会不定时为大家更新文章,敬请期待. 前端上传excel文件到后台,后台接收后保存数据到数据库. 这里需要说明的一点是前端 ...

  3. java jxls 科学计数_java通过jxls框架实现导入导出excel

    02 03 //读取 04 05 public class ReadExcel { 06 private final static String xmlConfig="student.xml ...

  4. java maven 读取配置文件_Java项目和maven项目中如何获取设置配置文件中的属性

    通常情况下,我们会在一些配置文件文件中配置一些属性.如: indexPath = E\:\\Tomcat_7.0\\webapps\\ipost_stage\\lucene\\index imgUpl ...

  5. java+自带excel导出_Java实现微信内置浏览器导出Excel表格功能

    最近做项目的时候遇到了这样一个问题,微信内置的浏览器把下载这个功能屏蔽了.唉,,,折腾了一天,从网上各种找资料,但是给的解决方案都不是我想要的(也不知道谁复制的谁的,基本都一样). 在快下班的时候,我 ...

  6. java微信群自动回复_JAVA实现 springMVC方式的微信接入、实现消息自动回复

    /*** 处理微信发来的请求 * *@paramrequest *@return */ publicString weixinPost(HttpServletRequest request) { St ...

  7. java package报错_Java基础知识总结 - 超详细篇(上)

    1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre. 2,JRE:Java Runtime Environment,java程序的运行环境,ja ...

  8. java内部类的作用_java 内部类的好处和缺点(上)

    一.什么是内部类 内部类是指在一个外部类的内部再定义一个类,类名不需要和文件夹相同.内部类可以声明 public .protected .private 等访问限制,可以声明为 abstract的供其 ...

  9. java 远程调试 端口_java – 远程调试:在端口8787上没有连接到OpenJDK 11上的Wildfly 14...

    我正在尝试将我的调试器连接到在Open JDK 11上运行的Wildlfy. 尽管Wildfly说: Listening for transport dt_socket at address: 878 ...

最新文章

  1. Dynamic Setting ImageUrl In DataPager
  2. python爬虫毕业设计题目-Python爬虫面试题170道:2019版【1】
  3. highcharts总结
  4. 拨号云服务器怎么自动配置网关_如何解决路由器静态IP+PPPoE拨号双链路负载分担问题...
  5. 树——axure线框图部件库介绍
  6. BugkuCTF-WEB题give_up
  7. MYSQL导入数据出现ERROR 1049 (42000): Unknown database 'n??;'
  8. 华为交换机配置syslog发送_华为/H3C Syslog配置
  9. Shell编程: Shell 变量
  10. playframework 打包在tomcat里部署
  11. 用LVM快照创建虚拟机
  12. Spark: history Server
  13. MyBatis获取参数值的两种方式以及传参情况
  14. 通过 Python 装饰器实现DRY(不重复代码)原则
  15. 剑指offer(C++)-JZ7:重建二叉树(数据结构-树)
  16. 关于visual studio 2015 智能提示英文,而非中文的解决方案
  17. 拓端tecdat|R语言ARMA GARCH COPULA模型拟合股票收益率时间序列和模拟可视化
  18. excel wind插件使用_Python和wind的交互—在债券中的应用
  19. linux下启动spoon提示Could not load SWT library
  20. 上小学的划片政策(by quqi99)

热门文章

  1. 如何使用MaxCompute Spark读写阿里云Hbase
  2. 【开发者成长】5 分钟搞定 Linux 正则表达式
  3. UI2CODE系列文章|如何批量制造高质量样本
  4. 黑科技揭秘:如何通过阿里云超算,使得汽车仿真效率提升25%
  5. 不用网关或代理的单点远程办公如何实现,Aruba推出EdgeConnect Microbranch
  6. 华为云云原生首次在太空验证,提升“天算星座“卫星计算精度
  7. 自动替换 Kubernetes 镜像
  8. AWS 专家教你使用 Spring Boot 和 DJL ,轻松搭建企业级机器学习微服务!
  9. 华为麒麟990芯片发布;谷歌宣布开源创新隐私保护技术;阿里20亿美元全资收购网易考拉;中国联通将设立100亿5G创新基金……...
  10. 微博短视频千万级高可用、高并发架构如何设计?