java实现xls/csv文件导入

原创 2016年06月01日 13:43:28

前段代码(easyUI):
1、导入文件插件:

function importXlsFile() {
    html = '<form id="fileForm" method="post" enctype="multipart/form-data" >'
            + '&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp'
            + '<table><tr>'
            + '<td class="head" noWrap>选择文件上传:</td><td>'
            + '<input type="file" name="uploadFile" id="uploadFile"  style="width:200px"/>'
            + '</tb></tr>' + '<table></form>';
    openImportDialog('excel导入', html);//导入数据
}

2、导入数据

function openImportDialog(t, html) {
    if ($('#excelDialog').length < 1) {
        $(
                '<div/>',
                {
                    id : 'excelDialog',
                    title : '批量导入',
                    html : "<div id='import'>"
                            + "</br>"
                            + "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp"
                            + html + "</div>" + "</div>"
                }).appendTo('body');
    }
    $('#excelDialog')
            .dialog(
                    {
                        modal : true,
                        resizable : false,
                        dragable : false,
                        closable : false,
                        open : function() {
                            $('#excelDialog').css('padding', '0.8em');
                            $('#excelDialog .ui-accordion-content').css(
                                    'padding', '0.4em').height(
                                    $('#excelDialog').height() - 100);
                        },
                        buttons : [
                                {
                                    text : '确定',
                                    handler : function() {
                                        var file = document.getElementById('uploadFile').value;
                                        if (/^.+\.(xls|XSL)$/.test(file)) {
                                            $.messager.progress();
                                            var action = '';
                                            action = appUrl+"后台处理数据的链接(action/controller)";
                                            var form = document.getElementById('fileForm');

                                            form.action = action;
                                            form.target = "hideFrame";
                                            form.submit();
                                        } else {
                                            $.messager.alert("提示", "请导入xls文件");
                                        }

                                    }
                                },
                                {
                                    text : '取消',
                                    handler : function() {
                                        window.location.href = window.location.href;
                                        $('#excelDialog').dialog('close');

                                    }
                                } ],

                        width : document.documentElement.clientWidth * 0.28,
                        height : document.documentElement.clientHeight * 0.50
                    });
}

3、java后台处理数据的链接(action/controller)
a、action或者controller处理

public String importXls(){
        if (StringUtils.isEmpty(uploadFileFileName)) {
            setFailMessage("导入失败");
            return RESULT_MESSAGE;
        }
        String fileName = this.uploadFileFileName.substring(this.uploadFileFileName.length() - 3,
                this.uploadFileFileName.length());
        if("xls".equalsIgnoreCase(fileName)){
            Map<String, Object> map=kunnrBusinessService.importXls(uploadFile);
            String msg=(String)map.get("resultMessage");
            if (StringUtils.isNotEmpty(msg)) {
                setFailMessage(msg);//返回错误信息
            }else{
                dealerList=(List<DealerDetail>)map.get("dealerList");
                this.getSession().setAttribute("dealerist", dealerAdujstList);//将导入的数据放在session中
                setSuccessMessage("导入成功");
            }
        }else {
            setFailMessage("导入的文件格式错误");
        }
    }

b、service处理

public Map<String, Object> importDealerAdjustmentXls(File uploadFile) {
        //读取数据表全局设置
        Map<String, Object> map=new HashMap<String,Object>();
        Workbook workbook = null;
        Sheet sheet = null;
        StringBuilder errorMsgContent = new StringBuilder();
        List<DealerAdujstDetail> dealerAdujstDetailList=new ArrayList<DealerAdujstDetail>();
        //读表逻辑处理
        try {
            //读取工作表
            workbook=new HSSFWorkbook(new FileInputStream(uploadFile));
            //获取表头
            String[] header=new String[8];
            header[0]="组织";
            header[1]="代码";
            header[2]="名称";
            header[3]="年";
            header[4]="月";
            header[5]="项";
            header[6]="项名称";
            header[7]="箱";
            //开始读取数据表格
            sheet=workbook.getSheetAt(0);
            int row=sheet.getLastRowNum();
            if(row==0){
                errorMsgContent.append("导入的Excel为空!</br>");
            }else if(sheet.getRow(0).getLastCellNum() != header.length){
                errorMsgContent.append("导入的Excel列数与下载文件列数不一致!</br>");
            }else{
                for (int i = 0; i < header.length; i++) {
                    if (!header[i].equals(getValue(sheet.getRow(0).getCell(i)))) {
                        errorMsgContent.append("第").append(i + 1).append("列")
                                .append(getValue(sheet.getRow(0).getCell(i)))
                                .append("与模板中").append(header[i]).append("不一致");
                    }
                }
                if (errorMsgContent.length() > 0) {
                    map.put("resultMessage", errorMsgContent.toString());
                    return map;
                }
                //将相应的值赋值给页面
                for (int i = 1; i<row+1; i++) {
                    //字段设置
                    String org="";
                    String Id="";
                    String kunnr="";
                    String Year="";
                    String Month="";
                    String matter="";
                    String matterName="";
                    String adjust="";
                    //赋值
                    orgName=getValue(sheet.getRow(i).getCell(header.length-8));
                    kunnrId=getValue(sheet.getRow(i).getCell(header.length-7));
                    kunnrName=getValue(sheet.getRow(i).getCell(header.length-6));
                    applyYear=getValue(sheet.getRow(i).getCell(header.length-5));
                    applyMonth=getValue(sheet.getRow(i).getCell(header.length-4));
                    matter=getValue(sheet.getRow(i).getCell(header.length-3));
                    matterName=getValue(sheet.getRow(i).getCell(header.length-2));
                    adjustTarget=getValue(sheet.getRow(i).getCell(header.length-1));
//写入的值的判断 
                    if(StringUtils.isNotEmpty(orgName)&&StringUtils.isNotEmpty(kunnrId)&&StringUtils.isNotEmpty(kunnrName)){

                        if(count==0){
                            errorMsgContent.append("第" + (i) + "行:名称+代码(注意:形如010056)+组织必须不一致</br>");
                        }
                    }else{
                        errorMsgContent.append("第" + (i) + "行:经销商名称+代码(注意:形如01010056)+组织必须不能为空</br>");
                    }
                    if (StringUtils.isNotEmpty(applyYear)&&StringUtils.isNotEmpty(applyMonth)) {
//2、只能导入提报当月及以后月份
                        if (!applyYear.equals(year) || !applyMonth.equals(month)) {
                            errorMsgContent.append("第" + (i + 1) + "行:申请年月不符合要求(注意:月份形如06或者10)!</br>");
                        }
                    }else{
                        errorMsgContent.append("第" + (i + 1) + "行:"+header[3]+"不能为空!(注意:月份形如06或者10)</br>");
                    }   
                    if (StringUtils.isNotEmpty(matter)&&StringUtils.isNotEmpty(matterName)) {
//品项判断
                        if (count==0) {
                            errorMsgContent.append("第" + (i + 1) + "行:品项不符合要求!</br>");
                        }
                    }else{
                        errorMsgContent.append("第" + (i + 1) + "行:"+header[5]+"不能为空!</br>");
                    }
                    //3、项、数量必须大于等于目标
                    if (StringUtils.isNotEmpty(adjustTarget)) {
                    //首先判断是否是数字
                        for (int m_digit = 0; m_digit < adjustTarget.length(); m_digit++) {
                            char c = adjustTarget.charAt(m_digit);
                            if ((c < '0' || c > '9')) {
                                if(c!='.' && c!='-'){
                                    errorMsgContent.append("第" + (i + 1) + "行:"
                                            + header[7] + "为非数字的值!</br>");
                                    break;
                                }
                            }
                        }
                        if (detailList.size()!=0) {
                            for (DealerAdujstDetail detail1 : detailList) {
                                if(Long.valueOf(adjustTarget)<=Long.valueOf(detail1.getNowDealerTarget())){
                                    errorMsgContent.append("第" + (i + 1) + "行:调整目标量不符合要求!</br>");
                                }
                            }
                        }
                    }else{
                        errorMsgContent.append("第" + (i + 1) + "行:"+header[5]+"不能为空!</br>");
                    }
                    //字段赋值
                    }
                }
            }
            map.put("resultMessage", errorMsgContent.toString());
            map.put("dealerList", dealerList);
            return map;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Java读取csv文件并将内容插入到数据库

Java读取csv文件并将内容插入到数据库
  • changerzhuo_319
  • changerzhuo_319
  • 2016年12月01日 19:54
  • 5969

jsp页面上传csv文件

1、jsp页面                         离职待清偿列表                         importLeaveIdList"> 待查员工...
  • zhengchao1991
  • zhengchao1991
  • 2016年07月04日 15:21
  • 1068

Java编程之CSV文件导入与导出的实现

年前在开发功能模块的时候用到了CSV文件导入导出,就此整理一下,便于大家参考。 导入导出功能很多时候用到的都是Excel文件,但是现在越来越多的使用了CSV文件进行此操作,它是一个纯文本文件,可以用...
  • u011744629
  • u011744629
  • 2016年02月18日 14:19
  • 5618

java读写CSV文件的两种方法

BufferedWriter writer =new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "GBK...
  • KinseyGeek
  • KinseyGeek
  • 2017年04月18日 23:16
  • 1833

csv表格处理(下)--纯JS解析导入csv

科技优家 2016-11-30 16:18 多日前的上篇介绍了csv表格,以及JS结合后端PHP解析表格填充表单的方法。其中csv转换成二维数组的时候逻辑比较复杂多坑,幸好PHP有丰富的库函数来...
  • u011277123
  • u011277123
  • 2016年12月06日 08:42
  • 1758

java读取csv文件并将其转成json

http://blog.csdn.net/wb453178064/article/details/53689701 分类: java(3) 作者同类文章X ...
  • chengly0129
  • chengly0129
  • 2017年06月21日 16:23
  • 917

java 导入Excel 文件,支持xls、xlsx、csv格式

  • 2016年09月19日 16:22
  • 10.23MB
  • 下载

利用Javacsv实现Java读写csv文件

今天跟大家分享一个利用外部Jar包来实现Java操作CSV文件 一.资源下载 1.直接下载Jar包: http://central.maven.org/maven2/net/sourceforg...
  • StemQ
  • StemQ
  • 2017年03月07日 23:03
  • 6678

Java操作Excel文件以及将xls/xlsx转为csv文件

Java 读写Excel文件以及xls、xlsx文件转化为csv文件的陷阱
  • riskychengallesgut
  • riskychengallesgut
  • 2016年05月23日 23:56
  • 7102

java使用javacsv读取csv文件 导入Mysql数据库

科技优家 2016-11-23 09:48 包和测试文件已经上传: package csv; import java.io.IOException; import java.nio.ch...
  • u011277123
  • u011277123
  • 2016年11月25日 09:31
  • 2745
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java实现xls/csv文件导入
举报原因:
原因补充:

(最多只允许输入30个字)