文档章节

Java导出模板和导入Excel

夏至未至_super
 夏至未至_super
发布于 2016/02/01 15:49
字数 978
阅读 92
收藏 1

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

没有更多内容

加载失败,请刷新页面

加载更多

多线程

1. 多线程概念。并发和并行的概念。 多线程指的是一段时间内cpu同时执行多个线程。一个程序至少运行>=1个进程,进程就是运行中的程序,而一个进程至少运行>=1个线程,线程是操作系统能调度的...

鱼想吃肉
6分钟前
0
0
HBase 表修复在线方式和离线方式

一、在线修复 1.1 使用检查命令 $ ./bin/hbase hbck 该命令可完整修复 HBase 元数据信息;存在有错误信息会进行输出; 也可以通过如下命令查看详细信息: $ ./bin/hbase hbck -details 1.2 ...

Ryan-瑞恩
31分钟前
1
0
redis 系列二 -- 常用命令

1.基础命令 info ping quit save dbsize select flushdb flushall 2.键命令 2.1 set 直接赋值 set a a 2.2 get 取值 get a 2.3 exists 是否存在 exists a 2.4 expire 设置剩余时间 秒 expire......

imbiao
今天
1
0
php foreach

<?php// 数组的引用$a=array(1,2,3,4,5);foreach($a as $key=>&$value){$value=$value*2;}print_r($a);echo " $key -------------------$value\r\n";/** * ...

小张525
今天
1
0
12-利用思维导图梳理JavaSE-多线程

12-利用思维导图梳理JavaSE-多线程 主要内容 1.线程概念 2.线程开发 3.线程的状态 4.线程的同步和死锁 5.Java5.0并发库类 QQ/知识星球/个人WeChat/公众号二维码 本文为原创文章,如果对你有一...

飞鱼说编程
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部