zoukankan      html  css  js  c++  java
  • spring+struts+mybatis中关于导出Excel数据

     前端页面主要获取ID数组值,并且将ID数组值传到后台并获取后台传来的是数据导出Excel

    1.function diaoboExport(){ 2 var Export=true; 3 var ids=""; 4 $("input[name='ids']:checked").each(function(){ 5 ids += this.value + "," ; 6 }); 7 ids = ids.substring(0,ids.length-1); 8 $("input[name='ids']:checked").each(function(){ 9 var value = this.value; 10 $.each(function(i,va){ 11 if(va.id == value){ 12 //console.log(va.id+"...."+va.acceptStatus); 13 if(va.devStatus != 5){ 14 Export = false; 15 return false; 16 } 17 } 18 }); 19 }); 20 if(Export){ 21 $.ajax({ 22 type:"post", 23 url:"allot/allotExportAllot", 24 data:{ids:ids}, 25 cache:false, 26 success:function(data){ 27 $("input[name='ids']:checked").each(function(){ 28 this.checked = false; 29 }); 30 window.location.href = "<%=basePath%>download/设备调拨单.xlsx"; 31 } 32 }); 33 } 34 }

    Action:主要接收前面页面传来的ID值并调用serviceImpl方法

     1 /**
     2      * 导出调拨表数据
     3      * */
     4     public void allotExport(){
     5         try {
     6             if(ids!=null &&!"".equals(ids)){
     7                 deviceService.AddExportDiaobo(ids);
     8             }else{
     9                 throw new Exception("导出传递调拨的ID值无效");
    10             }
    11         } catch (Exception e) {
    12             e.printStackTrace();
    13         }
    14     }

    ServiceImpl:主要讲传来的ID数组解析放到数据库查询出所有数据,并调用导出方法

     1 public void AddExportDiaobo(String ids) throws Exception{
     2         Map<String, Object> params = new HashMap<String, Object>();
     3         List<Integer> idss = new ArrayList<Integer>();
     4         String[] result = ids.split(",");
     5         for(int j =0;j<result.length;j++){
     6             idss.add(Integer.parseInt(result[j].trim()));
     7         }
     8         params.put("list", idss);
     9         List<Device> device3 = deviceDao.listDeviceByIds(params);
    10         if(device3!=null){
    11             AllotExcelExport.exportAllotExport(device3);
    12         }else{
    13             throw new Exception("调拨表传来的ID值无效");
    14         }
    15     }

    Export:将已有的调拨模板copy,并将得到的值放到sheet中,导出数据

     1 public class AllotExcelExport {
     2   public static void exportAllotExport(List<Device> list) throws Exception{
     3       try {
     4         //定义路径
     5           String realpath= ServletActionContext.getServletContext().getRealPath( 
     6             "/download/");
     7            File file=new File(new File(realpath),"设备调拨单.xlsx");
     8            if(file.getParentFile().exists()){
     9                file.getParentFile().mkdirs();
    10            }
    11            File file1=new File(realpath+"/temp/设备调拨单-模板.xlsx");
    12            if(file1.exists()){
    13                FileUtils.copyFile(file1,file);
    14                FileInputStream input = new FileInputStream(file);
    15                XSSFWorkbook wb = new XSSFWorkbook(new BufferedInputStream(input));
    16                XSSFSheet sheet = wb.getSheetAt(0);
    17                
    18                for (int i = 0; i < list.size(); i++) {
    19                    if(sheet.getRow(i+2)==null ||  sheet.getRow(i+2).getCell(0)==null){
    20                        continue;
    21                    }
    22                    
    23                    sheet.getRow(i+2).getCell(0).setCellValue(list.get(i).getId());//序号
    24                    sheet.getRow(i+2).getCell(1).setCellValue(list.get(i).getDataCode()==null?"":list.get(i).getDataCode());//IT资产编号
    25                    sheet.getRow(i+2).getCell(2).setCellValue(list.get(i).getAssetCode()==null?"":list.get(i).getAssetCode());//固定资产编号                  
    26                    sheet.getRow(i+2).getCell(3).setCellValue(list.get(i).getName()==null?"":list.get(i).getName());//设备名称
    27                    sheet.getRow(i+2).getCell(4).setCellValue(list.get(i).getDeviceTypeM()==null?"":list.get(i).getDeviceTypeM().getName());//设备型号
    28                    sheet.getRow(i+2).getCell(5).setCellValue(list.get(i).getHasGone()==null?"":list.get(i).getHasGone());//设备去向
    29                    sheet.getRow(i+2).getCell(6).setCellValue(list.get(i).getAllotTime()==null?"":DateTimeUtil.DatetoString_ymd(list.get(i).getAllotTime()));//调拨时间  
    30             }
    31                FileOutputStream outputStream = new FileOutputStream(file);
    32                 wb.write(outputStream);
    33                 outputStream.close(); 
    34                
    35            }else{
    36                System.out.println("源文件不存在");
    37                 throw new Exception();
    38            }
    39     }catch (FileNotFoundException e) {
    40         // TODO: handle exception
    41         e.printStackTrace();
    42     }catch (IOException e) {
    43         // TODO 自动生成的 catch 块
    44         e.printStackTrace();
    45     }
    46   }
    47 }

    此种导出数据Excel可能比较使用用于懒人方法,更多导出方法欢迎评论留下您的足迹!

  • 相关阅读:
    近期遇到的问题 与 总结
    最近使用的控件整理
    sass import 小记
    Visual studio 相关插件
    nodeJs中linq.js学习
    C++ Socket编程步骤
    Qt 多线程同步 与 通信
    信号槽 与事件区别
    Qt 关键宏 转自网络整理
    mongoDB windows安装
  • 原文地址:https://www.cnblogs.com/jbml-154312/p/6893928.html
Copyright © 2011-2022 走看看