Excel导入功能(Ajaxfileupload)
前言:
前端采用Easyui+Ajaxfileupload实现
后端采用springmvc框架,其中把解析xml封装成了一个jar包,直接调用即可 准备:
前端需要导入(easyui导入js省略,自行导入即可)
Ajaxfileupload.js 下载地址:http://files.cnblogs.com/files/holdon521/ajaxfileupload.zip
后端需要导入:
ht-excel.jar 下载地址:http://files.cnblogs.com/files/holdon521/ht-excel.zip
前端代码:
<div class="easyui-layout" fit="true" style="overflow-y:auto;">
<div class="ht-info">
<div class="ht-tip icon-tip"></div>
<div>电视台类型导入</div>
</div>
<div>
<form id="uploadform" action="" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>请选择文件:</td>
<td>
<input type="file" name="file" id="file" ></input>
</td>
</tr>
</table>
</form>
</div>
<div region="south" border="false" style="text-align:right;height:30px;line-height:30px;background:#EAF2FF;">
<a href="#" onclick="ajaxFileUploadForType()"class="easyui-linkbutton" icon="icon-ok" >提交</a>
<a class="easyui-linkbutton" icon="icon-cancel" href="javascript:$ht.win.close('uploadTvType')">取消</a>
</div>
</div>
<script type="text/javascript">
function ajaxFileUploadForType(){
if($('input[type="file"]').val()!=""){
var extend=$('input[type="file"]').val().substr($('input[type="file"]').val().lastIndexOf(".")+1);
if("xls|xlsx".indexOf(extend+"|")==-1){
flagPic=false;
$.messager.alert("提示信息","选择的文件必须是EXCEL文件,请确认!");
}else{
$.ajaxFileUpload
(
{
url: 'uploadTvType', //用于文件上传的服务器端请求地址
secureuri: false, //是否需要安全协议,一般设置为false
fileElementId: 'file', //文件上传域的ID
dataType: 'text', //返回值类型 一般设置为json
success: function (responseJSON) //服务器成功响应处理函数
{
if(responseJSON == "0"){
$.messager.alert('提示信息','电视台类型导入成功!');
$ht.win.close('uploadTvType');
$ht.grid.reload('gridTvType');
}else if(responseJSON == "2"){
$.messager.alert('提示信息','没有符合要求的数据或要导入的数据,在数据库中已经存在,请确认!');
}else if(responseJSON == "error"){
$.messager.alert('提示信息','电视台类型导入失败!');
}else {
$.messager.alert('提示信息',responseJSON);
$ht.grid.reload('gridTvType');
}
},
error: function (data, status, e)//服务器响应失败处理函数
{
$.messager.alert('提示信息','电视台类型导入失败!');
}
}
)
}
}else{
$.messager.alert("提示信息","请选EXCEL文件!");
}
}
</script>
后端代码:
注:实体类对应Excel里列名称,可以设置非空校验(如果为空,这默认该行数据获取不到),重写父方法即可,以下代码注释重写了
import java.util.List;
import com.sh.excelUtil.model.BaseModel;
import com.sh.excelUtil.persistence.FieldNote;
public class TvTypeBean extends BaseModel implements java.io.Serializable{ private static final long serialVersionUID = -5217032731630006972L; @FieldNote(logicalName = "终端类型",physicalName = "terminalType",notNull = true)
private String terminalType; @FieldNote(logicalName = "分类编码",physicalName = "tvTypeCode",notNull = true)
private String tvTypeCode; @FieldNote(logicalName = "分类名称",physicalName = "tvTypeName",notNull = true)
private String tvTypeName; @FieldNote(logicalName = "分类缩写名称",physicalName = "tvTypeAbridgeName",notNull = true)
private String tvTypeAbridgeName; @FieldNote(logicalName = "排序字段",physicalName = "orderBy")
private String orderBy; @Override
public List<Object> check(BaseModel model, List<Object> valueList){
// valueList = super.check(model,valueList);
//TODO:实现非空时的数据检验
return valueList;
}
/**
* @return the terminalType
*/
public String getTerminalType() {
return terminalType;
} /**
* @param terminalType the terminalType to set
*/
public void setTerminalType(String terminalType) {
this.terminalType = terminalType;
} /**
* @return the tvTypeCode
*/
public String getTvTypeCode() {
return tvTypeCode;
} /**
* @param tvTypeCode the tvTypeCode to set
*/
public void setTvTypeCode(String tvTypeCode) {
this.tvTypeCode = tvTypeCode;
} /**
* @return the tvTypeName
*/
public String getTvTypeName() {
return tvTypeName;
} /**
* @param tvTypeName the tvTypeName to set
*/
public void setTvTypeName(String tvTypeName) {
this.tvTypeName = tvTypeName;
} /**
* @return the tvTypeAbridgeName
*/
public String getTvTypeAbridgeName() {
return tvTypeAbridgeName;
} /**
* @param tvTypeAbridgeName the tvTypeAbridgeName to set
*/
public void setTvTypeAbridgeName(String tvTypeAbridgeName) {
this.tvTypeAbridgeName = tvTypeAbridgeName;
} /**
* @return the orderBy
*/
public String getOrderBy() {
return orderBy;
} /**
* @param orderBy the orderBy to set
*/
public void setOrderBy(String orderBy) {
this.orderBy = orderBy;
}
}
import java.util.List;
import com.sh.excelUtil.excel.POIExcelUtil;
@Controller
@RequestMapping("/channelinfomanage")
public class ChannelInfoManageController{
@RequestMapping("/uploadTvType")
public void uploadTvType(HttpServletRequest request,
@RequestParam("file") MultipartFile file,
HttpServletResponse response) throws Exception {
//该对象为jar中工具类
POIExcelUtil poi = new POIExcelUtil();
poi.impExcelFile(fileName, new TvTypeBean(),inputStream);
List<Object> valueList = poi.getValueList();
if(valueList!=null && valueList.size()>0){
for(int i =0;i<valueList.size();i++){
TvTypeBean bean = (TvTypeBean)valueList.get(i);
//输出字段数据,并插入到相应的表中,省略
System.out.println(bean.getTvTypeCode()+。。。。。。。);
}
}
} }
}
Excel导入功能(Ajaxfileupload)的更多相关文章
- 解析大型.NET ERP系统 设计通用Microsoft Excel导入功能
做企业管理软件很难避免与Microsoft Excel打交道,常常是软件做好了,客户要求说再做一个Excel导入功能.导入Excel数据的功能的难度不大,从Excel列数据栏位的取值,验证值,再导入到 ...
- java利用jxl实现Excel导入功能
本次项目实践基于Spring+SpringMvc+MyBatis框架,简单实现了Excel模板导出.和Excel批量导入的功能.实现过程如下:. 1.maven导入所需jar包 <depende ...
- 后端Springboot前端VUE实现Excel导入功能
功能描述:做的是物联网的项目,Excel导入实现的功能是将Excel中的数据批量的导入AEP系统,再导入我们系统中.目前已经完成该功能,前端还会添加进度条优化.对于导入导出功能,推荐这个Git:htt ...
- Excel导入功能
一:前端 <t:dgToolBar title="Excel题库导入" icon="icon-search" onclick="question ...
- Java中Excel导入功能实现、excel导入公共方法_POI -
这是一个思路希望能帮助到大家:如果大家有更好的解决方法希望分享出来 公司导入是这样做的 每个到导入的地方 @Override public List<DataImportMessage> ...
- Java Controller下兼容xls和xlsx且可识别合并单元格的excel导入功能
1.工具类,读取单元格数据的时候,如果当前单元格是合并单元格,会自动读取合并单元格的值 package com.shjh.core.util; import java.io.IOException; ...
- php Excel 导入功能
下载excel类地址 https://pan.baidu.com/s/19MqAHUn4RyZ5HEAChyC0jg 密码:mn58 本人用的thinkcmf框架 把类文件放在框架的类文件里面,下面 ...
- excel 导入功能
一:示例代码 //InputStream fis = new FileInputStream(tomcaturl+this.awardTask.getFileRoute());//可以通过上述方式获得 ...
- React + Antd开发模式下的Excel导入功能
具体js如下,配合的是antd里面的upload组件,使用的是xlsx插件 npm : npm install xlsx 插件链接: https://github.com/SheetJS/sheet ...
随机推荐
- 05.while循环的练习
练习1: namespace _05.while循环练习01 { class Program { static void Main(string[] args) { //打印100次"努力学 ...
- 关于meta标签中的http-equiv属性使用介绍
关于meta标签中的http-equiv属性使用介绍 meta是html语言head区的一个辅助性标签.也许你认为这些代码可有可无.其实如果你能够用好meta标签,会给你带来意想不到的效果,meta标 ...
- sublime Error executing: /usr/bin/security dump-trust-settings -d
sublime text2突然crash,无法简单粗暴的关闭,就开始认真解决这个问题. 问题: 参考文献:https://github.com/wbond/package_control/issues ...
- VC6.0静态编译注意事项
选择静态编译(工程->常规->Microsoft基础类->使用MFC作为静态链接库)的时候,会报错:MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: ...
- 通过 PowerShell 的方式增加虚拟机终结点
关于虚拟机终结点的概念请阅读:如何设置虚拟机的终结点 本文包含以下内容(本文在名称为"pstest"的虚拟机做测试): 通过 PowerShell 的方式增加终结点 通过 Powe ...
- asyncio标准库2 Hello Clock
如何调度协程,并发运行 asyncio.gather方法可以聚合协程or future def gather(*coros_or_futures, loop=None, return_exceptio ...
- vscode 显示"没有活动的源代码控制提供程序“处理
不知为何我的 VS Code 在 1.25 版本开始就一直 ”没有活动的源代码控制提供程序“,找了好几天都没找到,今天终于找到怎么处理了, 切换到插件中找到下图对应的 Git (可以直接再上面搜索框输 ...
- RAC常用日志总结
12C RAC:ocssd启动失败log目录:/u01/app/grid/diag/crs/host02/crs/trace/alert.log
- windows10 、eclipse kepler配置maven环境
maven环境的配置需要先配置Java环境. 一.在wIn10 中配置maven环境,需要先下载maven压缩包,官网http://maven.apache.org/download.cgi,我选择下 ...
- Android(java)学习笔记32:Android布局详解之一:FrameLayout
1. FrameLayout是最简单的布局了.所有放在布局里的控件,都按照层次堆叠在屏幕的左上角.后加进来的控件覆盖前面的控件. 在FrameLayout布局里,定义任何空间的位置相关的属性都毫无意义 ...