文档章节

Java导出模板和导入Excel

夏至未至_super
 夏至未至_super
发布于 2016/02/01 15:49
字数 978
阅读 88
收藏 1
点赞 1
评论 0

html

<div id="inputDiv" class="easyui-dialog" title="导入商品" 
style="width:300px;height:220px;padding:10px" 
data-options="buttons:'#inputDiv-buttons', closed:true,modal:true">
    <form action="<%=basePath %>admin/itme/exportExcel.html" method="post" id="exportForm" style="float:right;">
         <input type="submit" value="模板下载"/>  
    </form>
    <form class="inputForm" id="itmeInput" method="post" enctype="multipart/form-data">
    <table width="100%">
            <tr>
                <td align="center" style="width:100px;" valign="top">请选择要导入的EXCEL文件(文件格式:.xls)</td>
            </tr>
            <tr>
                <td align="left" style="width:100px;height: 10px;"></td>
            </tr>
            <tr>
                <td align="center">
                      <input type="file" name="importExcel" class="easyui-validatebox"  id="importExcel"/>
                </td>
            </tr>
            <tr>
                <td colspan="2" align="center">
                    <div style="margin:0 auto;margin-top:10px;">
                        <span style="margin-right:20px;">
                            <a href="javascript:inputData()" class="easyui-linkbutton" icon="icon-save">确定</a>
                        </span>
   
                     <a href="#" onclick="$('#inputDiv').dialog('close')" class="easyui-linkbutton" icon="icon-cancel">取消</a>
                    </div>
                </td>
            </tr>
        </table>
    </form>
</div>

script

//批量导入库区
    function inputData(){
        $('#inputDiv').dialog('close');
        $('#itmeInput').form('submit', {
            url:"itme/insertManyItme.html",
            onSubmit: function(){
                var objtype=$("#importExcel").val().substring($("#importExcel").val().lastIndexOf(".")).toLowerCase();
                if($("#importExcel").val().length == 0){
                    $.messager.alert('提示','请选择导入文件!');
                    return false;
                }else if(objtype != '.xls'){
                    $.messager.alert('提示','导入类型不正确!');
                    return false;
                }else{
                     $.messager.progress({
                         title:'导入数据',
                         msg:'正在导入...'
                         });
                }
            },
            success:function(data){
                $.messager.progress('close');
                if(data == 'null' || data.length == 0){
                    $.messager.show({title:'导入数据',msg:"导入失败!",timeout:5000,showType:'show'});
                    return;
                }
                var data = eval(data);
                
                if(data.length == 2 && data[0] == -1){
                    $.messager.show({title:'导入数据',msg:data,timeout:5000,showType:'show'});
                    return;
                }
                
                if(data.length>0){
                    $('#itmeGrid').datagrid('load');
                    var message="";
                    for(var i=0;i<data.length;i++){
                        message+=data.cdskItemName+",";
                    } 
                    $("#importExcel").attr("value","");
   
                    $.messager.show({title:'导入数据',msg:"添加商品名称:"+message.substring(0,message.length-1)+"成功!",timeout:5000,showType:'show'});
                }else{
                    $("#importExcel").attr("value","");
                    $.messager.show({title:'导入数据',msg:"导入失败!",timeout:5000,showType:'show'});
                }
            }
        });
    }

模板下载java

public static void uploadModel(HttpServletResponse response,String fileName) {
        // TODO Auto-generated method stub
        try { 
            // 定义输出类型
           response.setContentType("application/vnd.ms-excel;charset=UTF-8");// 定义输出类型 
           response.reset();// 清除缓冲中的数据
           ////attachment --- 作为附件下载
           ////inline --- 在线打开
           response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\";");
           
           URL url = new URL((String) EhcacheUtil.get("saveUrl")+"modelExcel/"+fileName);
           URLConnection conn = url.openConnection();  
            BufferedInputStream bufferedInputStream=new BufferedInputStream(conn.getInputStream());
            BufferedOutputStream bufferedOutput = new BufferedOutputStream(response.getOutputStream());
            int len=-1;  
            byte[] bt = new byte[1024];
            while ((len = bufferedInputStream.read(bt)) > 0) { 
                 bufferedOutput.write(bt, 0, len);
                   bufferedOutput.flush();
            }  
            //关闭输入流
              bufferedOutput.close();
              bufferedInputStream.close();
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }

获取流

//poi获取导入文件流:
    public static InputStream getInputStream(HttpServletRequest request, String fileName) throws Exception
    {
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        try
        {
            if (isMultipart == true)
            {
                // 为该请求创建一个DiskFileItemFactory对象,通过它来解析请求
                FileItemFactory factory = new DiskFileItemFactory();
                ServletFileUpload upload = new ServletFileUpload(factory);
                // 将所有的表单项目都保存到List中
                List<FileItem> items = upload.parseRequest(request);
                Iterator<FileItem> itr = items.iterator();
                // 循环list,取得表单项
                while (itr.hasNext())
                {
                    FileItem item = (FileItem) itr.next();
                    // 检查当前项目是普通表单项目还是文件。
                    if (item.isFormField())
                    {
                        // 如果是普通表单项目,显示表单内容。
                        String fieldName = item.getFieldName();
                        // 对应form表单中type="text" name="name"
                        if (fieldName.equals(fileName))
                        {
                            //log.info("the field name is" + item.getString()); // 显示表单内容
                        }
                    } else
                    {
                        // 如果是文件
                        if (item.getFieldName().equals(fileName))
                        {
                            // 如果上传文件的file的name为" filecer"
                            InputStream inStream = item.getInputStream();
                            return inStream;
                        }
                    }
                }
            } else
            {
                //log.info("the enctype must be multipart/form-data");
            }
        } catch (Exception e)
        {
           // log.info("获取文件输入流有误........" + e.getMessage());
        }
        return null;
    }

加载数据

    @Override
    public String insertImportExcel(HttpServletRequest request,
            CondOrderLimit col, EsUser esUser) {
        try {
            InputStream in = LocalUpload.getInputStream(request,"importExcel");
            if(in!=null){
                return readXlsInputStreamToCarMemberList(in,col,esUser);
            }
        } catch (Exception e) {
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().isRollbackOnly();
        }
        return null;
    }
    
    //poi获取的inputstream转换为excel,组装成对象:
    public String readXlsInputStreamToCarMemberList(InputStream ins,CondOrderLimit cols,EsUser user){
            List<CdWhItme> list = new ArrayList<CdWhItme>();
            List<String> resonList = new ArrayList<String>();//返回的结果提示
            resonList.add("-1");
            int totalRow = 0;//区分是不是表头
            try{
                POIFSFileSystem fs = new POIFSFileSystem(ins);
                HSSFWorkbook wb = new HSSFWorkbook(fs);
                HSSFSheet sheet = wb.getSheetAt(0);
                Iterator rows = sheet.rowIterator();
                int itemCode = Integer.parseInt(getNextCodeForImport(user.getEsCorCode()));//获取下一个编码规则
                int codeAdds = 0;//商品编码需要递增的
                // 循环行
                a:while (rows.hasNext()){
                    HSSFRow row = (HSSFRow) rows.next();
                    if (row.getRowNum() > 0){
                        // 循环列Cell
                        //0商品名称,1商品类型,2商品类别,3规格等级,4单位,5产地,6商品描述
                        Iterator cells = row.cellIterator();
                        CdWhItme cdWhItme = new CdWhItme();
                        // 循环列
                        while (cells.hasNext()){
                            HSSFCell cell = (HSSFCell) cells.next();
                            int col = cell.getCellNum();
                            switch (col){
                            // 商品类型
                            case 1:
                                if(cdWhItme.getCdskItemName() == "" || cdWhItme.getCdskItemName() == null){
                                    resonList.add("第"+(row.getRowNum()+1)+"行导入错误!原因:商品名称不能为空!");
                                    return Tools.toJson(resonList);
                                }
                                if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING){
                                    if(cell.getStringCellValue().length() > 100){
                                        resonList.add("第"+(row.getRowNum()+1)+"行导入错误!原因:商品类型不能大于100字符!");
                                        return Tools.toJson(resonList);
                                    }
                                    cdWhItme.setCdskItemCategory(cell.getStringCellValue());
                                }else if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){
                                    cdWhItme.setCdskItemCategory(Integer.toString((int)(cell.getNumericCellValue())));
                                }
                                break;
                            default:
                                //log.info("未找到对应的数据列");
                                break;
                            }
                        }
                        list.add(cdWhItme);
                    }
                }
                if(list.size() > 0){
                    return Tools.toJson(list);
                }
            } catch (IOException e){} finally{}
            return null;
        }


© 著作权归作者所有

共有 人打赏支持
夏至未至_super
粉丝 0
博文 6
码字总数 1975
作品 0
成都
java poi导入excel日期处理

java导入execl常见问题 一,导入的日期为一串数字 如“320422192610161818” 1, 在java导出excel时获取到的日期或其他列是一串数字,并且不管怎么更改都为数字则可以判断为模板有问题 解决办...

菜鸟来了
2015/04/18
0
0
Apache POI操作Excel导出JAVABEAN对象方法

Apache POI操作Excel导出方法说明 Apache的POI组件是Java操作Microsoft Office办公套件的强大API,其中对Word,Excel和PowperPoint都有支持,当然使用较多的还是Excel,因为Word和PowerPoin...

JAVA枪手
2014/05/08
0
0
java基于poi实现快速操作Excel的工具[v2.1.0]版本更新

Excel4J v2.x 一. v2.x新特性 Excel读取支持部分类型转换了(如转为Integer,Long,Date(部分)等) v2.0.0之前只能全部内容转为String Excel支持非注解读取Excel内容了,内容存于对象内 现在支持导...

Crab2Died
2017/10/28
0
1
Java读取导入Excel文件解析

在编程中经常需要使用到表格(报表)的处理主要以Excel表格为主。下面给出用java读取excel表格方法:   1.添加jar文件   java导入导出Excel文件要引入jxl.jar包,最关键的是这套API是纯J...

_白开水_
2013/10/24
0
8
基于 POI 封装 ExcelUtil 精简的 Excel 导入导出

注 本文是使用 org.apache.poi 进行一次简单的封装,适用于大部分 excel 导入导出功能。过程中可能会用到反射,如若有对于性能有极致强迫症的同学,看看就好。 序 由于 poi 本身只是针对于 ...

倚楼听风雨_
2017/05/22
0
22
Java反射机制(未完成,还缺最后一个)

1、背景 1)Reflection也就是反射 是Java被视为动态(或准动态)语言的一个关键性质 2)反射机制指的是程序在运行时能够获取任何类的内部所有信息 2、实现功能概述 1)只要给定类的全名,即可...

萧小蚁
2015/05/03
0
0
Eclipse新建类的时候如何自动添加注释(作者,时间,版本等信息)

方法一:Eclipse中设置在创建新类时自动生成注释 windows–>preference Java–>Code Style–>Code Templates code–>new Java files 编辑它 1${filecomment} ${package_declaration} /** * @......

阮少爷
2017/10/28
0
0
Java快速开发平台,JEECG 3.7.7闪电版本发布,增加多套主流UI代码生成器模板

JEECG 3.7.7 闪电版本发布,提供5套主流UI代码生成器模板 导读 ⊙平台性能优化,速度闪电般提升 ⊙提供5套新的主流UI代码生成器模板(Bootstrap表单+BootstrapTable列表 ElementUI列表表单)...

Jeecg
07/16
0
0
JEECG 3.7.7 发布,增加多套主流 UI 代码生成器模板

JEECG 3.7.7闪电版本发布,提供5套主流UI代码生成器模板 导读 ⊙平台性能优化,速度闪电般提升 ⊙提供5套新的主流UI代码生成器模板 ⊙表单UI深度优化,平台UI风格升级一个级别 ⊙灵活通用代码...

Jeecg
07/16
0
0
Eclipse Code Template 设置

打开Code Template 设置 从菜单栏依次打开 Window --> Preferences --> Java --> Code Style --> Code Templates Comments代表注释模板,Code代表代码模板,其中每一个子菜单代表子项的模板。......

admin_qing
07/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java示例演示Functor 和monad

This article was initially an appendix in our Reactive Programming with RxJavabook. However introduction to monads, albeit very much related to reactive programming, didn't suit......

Quan全
6分钟前
0
0
微信官方jssdk Demo

1.html部分 <!DOCTYPE html><!-- saved from url=(0028){sh:$selfUrl} --><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="utf-8"......

koloor
9分钟前
0
0
数据库命名规范

https://www.cnblogs.com/pangguoming/p/7126512.html 摘要:当前研发工作中经常出现因数据库表、数据库表字段格式不规则而影响开发进度的问题,在后续开发使用原来数据库表时,也会因为数据...

塔塔米
9分钟前
0
0
java https 请求工具类-通用

package com.ra.common.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintW......

轻量级赤影
10分钟前
0
0
MFC界面套包BCG Pro Edition for MFC正式发布v27.3|附下载

BCGControlBar Professional Edition for MFC是MFC的一个扩展库,您可以用来构建类似于Microsoft Office 2000/XP/2003/2007/2010/2013 和 Microsoft Visual Studio-like(打印、用户定制工具......

Miss_Hello_World
10分钟前
0
0
Spring Cloud云服务 - HongHu架构common-service 项目构建过程

上一篇我们介绍了《整合spring cloud云服务架构 - HongHu云架构common-service代码结构分析》,本节我们将对common-service整个项目进行剖析,将整个构建的流程给记录下来,让更多的关注者来...

itcloud
11分钟前
0
0
Connection reset

在使用HttpClient调用后台resetful服务时,“Connection reset”是一个比较常见的问题,有同学跟我私信说被这个问题困扰很久了,今天就来分析下,希望能帮到大家。例如我们线上的网关日志就会...

夜黑人模糊灬
15分钟前
0
0
如何写PHP规范注释

所有的文档标记都是在每一行的 * 后面以@开头。如果在一段话的中间出来@的标记,这个标记将会被当做普通内容而被忽略掉。 @access 该标记用于指明关键字的存取权限:private、public或prote...

度_
16分钟前
0
0
influxDB Ppostgis

PostGis 1.需要安装postgreSQL,postgis作为插件嵌入到postgreSQL中; 2.使用zip包直接安装,需要修改 makepostgisdb_using_extensions.bat文件中的路径,用户名,密码,然后直接运行; 3.没有...

courtzjl
19分钟前
0
0
多线程Thread-多线程顺序执行

需求:现在有两个任务,任务1和任务2,任务1中有多个线程,并且任务2必须等任务1完成后才能执行。 namespace TThread{ class Program { static void Main(string[] ar...

kaixinguo314
23分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部