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()+。。。。。。。);

}

}

    }

  }
}
 
时间: 2024-10-28 21:18:09

Excel导入功能(Ajaxfileupload)的相关文章

解析大型.NET ERP系统 设计通用Microsoft Excel导入功能

做企业管理软件很难避免与Microsoft Excel打交道,常常是软件做好了,客户要求说再做一个Excel导入功能.导入Excel数据的功能的难度不大,从Excel列数据栏位的取值,验证值,再导入到数据库表中.然而一直是在做重复工作,写过不计其数的Excel导入程序,每次只是满足于问题解决,后来终于找到一个方法,实现通用的Excel数据导入. 设计通用的Excel导入功能,第一个实现要求是不能依赖Excel,客户的电脑或服务器很有可能没有安装Excel,所以微软的Office Interop一

Java中Excel导入功能实现、excel导入公共方法_POI -

这是一个思路希望能帮助到大家:如果大家有更好的解决方法希望分享出来 公司导入是这样做的 每个到导入的地方 @Override public List<DataImportMessage> materialDataImport2(byte[] fileBytes, String fileName) { //return DataImport(fileBytes, fileName, "inv_m"); File file = FileUtils.getFileFromByte

php开发中Excel导入功能的具体实现方法

对于在做php开发项目中,一般的项目设计到最多用到的是Excel的导出功能,而对于其导入功能一般是很少见的,而且对于php开发中Excel的导入功能也要比导出功能开发起来更困难一些,那么今天就来分享一下php开发中Excel导入功能的具体实现步骤: 1.首先将下载下来的PHP Excel插件代码放入项目/Thinkphp/Extend/Vendor/下; 2.在模板添加导入功能; html代码实现如下:<form action="{:U('Turntable/imports')}"

Excel导入功能

一:前端 <t:dgToolBar title="Excel题库导入" icon="icon-search" onclick="questionImportListImportXls()"></t:dgToolBar> <script type="text/javascript" charset="utf-8"> function questionImportListIm

C# 之 Excel 导入一列中既有汉字又有数字:数字可以正常导入,汉字导入为空

今天在做一个Excel导入功能,一切开发就绪,数据可以成功导入.导入后检查数据库发现有一列既有汉字又有数字,数字正常导入,汉字为空.但是前面同样既有汉字又有数字的列可以导入成功. 查看excel 源文件,如下图: 仔细观察两列略有不同,前两列的数字单元格左上角有个绿色三角形,选中单元格,左边有一个信息显示“ 次单元格中的数字为文本形式,或者前面有撇号. ”,也就是 “ 以文本形式存储的数字 ”. 然后尝试选中内容列,右键设置单元格格式为“ 文本 ”,修改后如下图: 再次导入仍然失败,单元格左上角

ASP.NET Aries 高级开发教程:Excel导入之单表配置(上)

前言: 随着ASP.NET Aries的普及,刚好也有点闲空,赶紧把Excel导入功能的教程补上. Excel导入功能,分为四篇:单表配置(上).多表高级配置(中).配置规则(下).代码编写(番外篇). 本篇介绍单表配置功能. 1.配置表头,把需要导入的勾打上. 对于格式化的配置(生成Excel模板时,也会变成下拉项,同时导入回来时,它也可以把下拉的中文翻译回数值) 说明: 勾了三个,说明导入只导入三个. 其中勾选了唯一(键),则导入的数据会根据唯一键(存在则更新.不存在则插入). 也可以勾选多

excel 导入导出测试点

目前,为方便操作,很多系统都会增加批量导入导出的功能.文件导入导出一般格式都是excel.由于用户直接在excel在填写内容,无法控制填写的格 式,加上excel解析比较困难,所以一般涉及到excel导入导出功能测试起来都较为繁杂.现将常用设计用例总结如下. 批量导入 一.模板检查测试 一般excel导入功能,都会提供模板下载功能. 1.模板只有一个文件 模板只有一个文件时,比较简单,检查一下模板和预期是否一致即可. 2.模板是一个压缩包 模板是压缩包时,需要检查一下压缩包中文件是否齐全,每一个

《.NET学习笔记》——使用NPOI读取Excel导入数据和导出Excel的功能

前提:由于有差不多两年时间没有进行B/S项目开发了,换了新工作,项目中要求有Excel导入数据库的功能,故保存下来供以后查看. 一.使用jQuery的uploadify插件完成选择文件并上传的功能: (1)先引入相关文件: <script src="../Scripts/uploadify/swfobject.js" type="text/javascript"></script> <link href="../Scripts

Excel导入导出的业务进化场景及组件化的设计方案(转)

1:前言 看过我文章的网友们都知道,通常前言都是我用来打酱油扯点闲情的. 自从写了上面一篇文章之后,领导就找我谈话了,怕我有什么想不开. 所以上一篇的(下)篇,目前先不出来了,哪天我异地二次回忆的时候,再分享分享. 话说最近外面IT行情飞涨还咋的,人都飞哪去了呢,听说各地的军情都进入紧急状态了. 回归下正题,今天就抽点时间,写写技术文,和大伙分享一下近年在框架设计上的取的一些技术成果. 2:项目背景 在针对运营商(移动.联通.电信.铁塔)的信息类的系统中,由于相关的从业人员习惯于Excel的办公