• java的报表下载代码excel


        /**
         * 汇总报表数据下载
         * */    
        private ModelAndView exportSummaryDatadown(HttpServletRequest request,
                HttpServletResponse response, List<InterfaceCost> interfaceCostListNew) throws Exception {
            //保存到磁盘        
            String time = QDateTime.dateToString(new Date(), "yyyy-MM-dd HH:mi:ss");
            time = time.replaceAll("-", "");
            time =time.replace(":", "");
            time =time.replace(" ", "");
            time = time.substring(2);
            String file_name = time + ".xls";
            String uploadDir = request.getRealPath("/resources") + "\Interfaceparameter\";
            OutputStream out  = null;
            try {
                
                File dirPath = new File(uploadDir);                    
                if (!dirPath.exists()) {
                      dirPath.mkdirs();
                  }
                    
                 out = new FileOutputStream(uploadDir+file_name);
                
                 // 设置第一行(表头的格式)
                jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.createFont("宋体"), 11, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
                jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc); // 表格样式
                wcfFC.setAlignment(jxl.format.Alignment.CENTRE);// 水平居中
                wcfFC.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);// 垂直居中
                wcfFC.setBorder(Border.ALL, BorderLineStyle.THIN);// 线条
                WritableWorkbook wb = Workbook.createWorkbook(out);// 写入流中
                WritableSheet ws = wb.createSheet("sheet1", 1);
                
                int[] geshi = {30,20,20} ;// 获取列宽
                for (int i = 0; i < geshi.length; i++) {
                    ws.setColumnView(i, geshi[i]);
                }
              
            //    int ioNor = 0; // 订单列记录值标识
                //数据总计            
                jxl.write.Label name = new jxl.write.Label(0, 0, "接口名称", wcfFC);
                ws.addCell(name);
                jxl.write.Label count = new jxl.write.Label(1, 0, "使用次数", wcfFC);
                ws.addCell(count);
                jxl.write.Label amount = new jxl.write.Label(2, 0, "消费点数", wcfFC);
                ws.addCell(amount);
                    
                // 显示第二行以后的数据
                // 设置第二行以后数据的格式
                wfc = new jxl.write.WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
                wcfFC = new WritableCellFormat(wfc);
                wcfFC.setAlignment(jxl.format.Alignment.CENTRE);// 水平居中
                wcfFC.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);// 垂直居中
                wcfFC.setBorder(Border.ALL, BorderLineStyle.THIN);// 线条
                
                int ioNor = 0; // 订单列记录值标识
                Integer addUpTo = 0;
                for(InterfaceCost interfaceCost:interfaceCostListNew){
                    jxl.write.Label optType = new jxl.write.Label(0, ioNor + 1, interfaceCost.getInterfaceName(), wcfFC);
                    ws.addCell(optType);
                    
                    jxl.write.Number totlecount = new jxl.write.Number(1, ioNor + 1, interfaceCost.getTotleCount(), wcfFC);
                    ws.addCell(totlecount);
                    
                    jxl.write.Number totle = new jxl.write.Number(2, ioNor + 1, interfaceCost.getTotleCost(), wcfFC);
                    ws.addCell(totle);
                    
                    addUpTo += interfaceCost.getTotleCost();
                    
                    ioNor++;
                    //ws.mergeCells(0, ioNor, 1, ioNor);//合并单元格
                }
                
                ioNor=ioNor+1;
                jxl.write.Label numberName = new jxl.write.Label(0, ioNor, "合计消费 "+addUpTo.toString()+" 点", wcfFC);
                ws.addCell(numberName);
                
                ws.mergeCells(0, ioNor, 2, ioNor);//合并单元格
                
                wb.write();
                wb.close();
    //            out.close();
                
            } catch (Exception ex) {
                ex.printStackTrace();
            }finally{
                if(out!=null){
                    out.close();
                }
            }
        
            //从磁盘读取
            InputStream inStream = null;
            OutputStream outs = null;
             try {        
                 response.setContentType("application/vnd.ms-excel");
                response.addHeader("Content-Disposition", "attachment; filename="
                        + file_name + "");    
                
                     inStream = new FileInputStream(uploadDir+file_name);
    //                String lineTxt = null;
                     outs = response.getOutputStream();
                    byte[] buf = new byte[4096];
                    int readLength;
                    while (((readLength = inStream.read(buf)) != -1)) {
                        outs.write(buf, 0, readLength);
                    }
    //                inStream.close();
                    outs.flush();
    //                outs.close();
             } catch (Exception e) {
                 log.error("读取文件内容出错");    
                 e.printStackTrace();
             }finally{
                 if(out!=null){
                    out.close();
                 }
                 if(inStream!=null){
                     inStream.close();
                 }
             }
            
            return null;
        }

     

  • 相关阅读:
    css优化篇
    select超全超详细总结篇
    meta总结
    富文本编辑
    textarea 换行处理
    07 DRF响应类:Response
    06 内部类
    05 序列化组件
    04 APIView的请求生命周期
    python中if __name__ == '__main__'是什么?
  • 原文地址:https://www.cnblogs.com/jinzhiming/p/4826852.html
Copyright © 2020-2023  润新知