• 导出 doc


    ...

    /**
         *  导出word 
         * @return
         * @throws Exception
         */
        @JCall
        public String word() throws Exception{
            String data=WebUtil.getParam("submitData");
            // {"nf":"2005","jd":"第四季度:10月-12月","yf":"","zdy_ks":"","zdy_js":""}
            
            // 数据处理
            List<Map<String, Object>> sj = sjcl(data);
            
            //文件名
            String fileName = DateUtil.format("yyyyMMddHHmmssSSS", new Date())+ ".doc";
            fileName = URLEncoder.encode(fileName, "utf-8");
            
            CustomXWPFDocument doc = mortgage(sj,data); // (用于处理.docx文件的高(ish)级别类) 自定义 XWPFDocument,并重写 createPicture()方法 
    
            try{//输出文件
                
                PropertiesUtil propertiesUtil=new PropertiesUtil("/db.properties");
                // 作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。
                FileOutputStream os = new FileOutputStream(new File(System.getProperty("catalina.home")+"/webapps/"+this.getRequest().getContextPath()+"/doc/"+fileName));
                // 获得字节流,通过该字节流的write(byte[] bytes)可以向response缓冲区中写入字节,再由Tomcat服务器将字节内容组成Http响应返回给浏览器。
                // OutputStream os = getResponse().getOutputStream();
                doc.write(os);
                //os.flush();
                os.close();
                return fileName;
            } catch (Exception e) {
                e.printStackTrace();
                // 没有数据 返回什么到前台呢 
                return "false";
            }
        }
        
        // 数据处理
        private List<Map<String, Object>> sjcl(String data) throws Exception {
            JSONObject Jdata =JSONObject.fromObject(data);
            String nf = Jdata.get("nf").toString();
            String jd = Jdata.get("jd").toString();
            String yf = Jdata.get("yf").toString();
            String zdy_ks = Jdata.get("zdy_ks").toString();
            String zdy_js = Jdata.get("zdy_js").toString();
            // {"nf":"2005","jd":"第四季度:10月-12月","yf":"","zdy_ks":"","zdy_js":""}
            
            String sql = " SELECT T.TASK_ID,T.TASK_NAME,T.XTYH_ID,T.TASK_DATE,T.TASK_TEXT, T.BY2,t.by3,T.CREATE_USER,T.CREATE_DATE,T.INSERT_PERSON,T.INSERT_TIME,T.DATA_FLAG,T.XMLX,T.SFGK,T.TASK_NAME_ID "
                        +" FROM FSXC3.T_FSXC_TASK T "
                        +" WHERE T.DATA_FLAG <> 'D' "
                        +" AND T.XTYH_ID='"+SysUtil.getUserId()+"' ";
            // dateTime=dateTime+" 00:00:00";
            // String sql =  " select * from t_fsxc_task t where t.XTYH_ID='"+SysUtil.getUserId()+"' and t.TASK_DATE like to_date('"+dateTime+"','yyyy-MM-dd')  and t.MODIFY_FLAG<>'D'  ";
            // date>='2010-01-01' and date<='2010-10-1'
            if(!nf.equals("") && jd .equals("") && yf.equals("")){ // 年份不等于空,季度等于空,月份等于空  >>年度
                // nf+="-01-01";
                sql += " AND T.TASK_DATE like '%"+nf+"%' "; // 模糊查询
                
            }else if(!jd.equals("")){ // 季度(问?第一:只选了季度;第二:季度加年份)
                String jdks = ""; 
                String jdjs = ""; 
                if(jd.equals("第一季度:1月-3月")){
                    jdks += "-01-01";
                    jdjs += "-03-31";
                }else if(jd.equals("第二季度:4月-6月")){
                    jdks += "-04-01";
                    jdjs += "-06-30";
                }else if(jd.equals("第三季度:7月-9月")){
                    jdks += "-07-01";
                    jdjs += "-09-30";
                }else if(jd.equals("第四季度:10月-12月")){
                    jdks += "-10-01";
                    jdjs += "-12-31";
                }
                if(!nf.equals("")){
                    sql += " AND T.TASK_DATE >= '"+nf+jdks+"' AND T.TASK_DATE <= '"+nf+jdjs+"' ";
                }else{
                    // 获得当前年份 加上季度时间
                    Calendar date = Calendar.getInstance();
                    String year = String.valueOf(date.get(Calendar.YEAR));
                    
                    sql +=" AND T.TASK_DATE >= '"+year+jdks+"' AND T.TASK_DATE <= '"+year+jdjs+"' ";
                }
            }else if(!yf.equals("")){ // 月份
                // 获得当前年份 加上季度时间
                Calendar date = Calendar.getInstance();
                int year = date.get(Calendar.YEAR); // 年份
                
                String Iyf = yf.substring(0,1); // 截取String中数字部分的月份
                int month = Integer.parseInt(Iyf); // 如果有0就只有数字
                
                String yfx ="-"+yf+"-01"; 
                
                /////////////////////////////////////////////
                // 获得某年某月的最后一天
                Calendar cal = Calendar.getInstance();
                    //设置年份
                cal.set(Calendar.YEAR,year);
                    //设置月份
                cal.set(Calendar.MONTH, month-1);
                    //获取某月最大天数
                int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
                ///////////////////////////////////////
                
                String yfd ="-0"+Iyf+lastDay; // 没有31号的月份会不会报错 // 获取这个月的最后一天
                
                if(!nf.equals("")){
                    sql += " AND T.TASK_DATE >= '"+nf+yfx+"' AND T.TASK_DATE <= '"+nf+yfd+"' ";
                }else{
                    sql +=" AND T.TASK_DATE >= '"+year+yfx+"' AND T.TASK_DATE <= '"+year+yfd+"' ";
                }
            }
            
            if(!zdy_ks.equals("")){
                sql +=" AND T.TASK_DATE >= '"+zdy_ks+"' ";
            }
            
            if(!zdy_js.equals("")){
                sql +=" AND T.TASK_DATE <= '"+zdy_js+"' ";
            }
            
            // (List集合中的对象是一个Map对象,而这个Map对象的键是String类型,值是Object类型)
            List<Map<String, Object>> sj = this.dBSelect(sql.toString()); // 调用查询数据库
            return sj;
        }
    
        // word
        private CustomXWPFDocument mortgage(List<Map<String, Object>> sj,String tj) throws Exception {
            JSONObject jsonObject=JSONObject.fromObject(tj);
            //{"nf":"2005","jd":"第四季度:10月-12月","yf":"","zdy_ks":"","zdy_js":""}
            String bt="";
            if(!jsonObject.getString("nf").equals("")){
                bt=jsonObject.getString("nf");
            }else if(!jsonObject.getString("jd").equals("")){
                bt+=jsonObject.getString("jd")+"个人工作";
            }else if(!jsonObject.getString("yf").equals("")){
                bt+=jsonObject.getString("yf")+"个人工作";
            }
            if(!jsonObject.getString("zdy_ks").equals("") && !jsonObject.getString("zdy_js").equals("")){
                bt=jsonObject.getString("zdy_ks").replace("T00:00:00", "")+"到"+jsonObject.getString("zdy_js").replace("T00:00:00", "")+"个人工作";
            }
            
            CustomXWPFDocument document= new CustomXWPFDocument();
            
            //添加标题
            XWPFParagraph titleParagraph = document.createParagraph();
            
            //设置段落居中
            titleParagraph.setAlignment(ParagraphAlignment.CENTER);
            
            
           
            XWPFRun titleParagraphRun = titleParagraph.createRun();
            titleParagraphRun.setBold(true);
            titleParagraphRun.setText(bt);
            titleParagraphRun.setFontFamily("方正小标宋简体");
            titleParagraphRun.setColor("000000");
            titleParagraphRun.setFontSize(22);
            
          //换行
            XWPFParagraph paragraph1 = document.createParagraph();
            XWPFRun paragraphRun1 = paragraph1.createRun();
            paragraphRun1.setText("
    ");
            
            for(int i=0;i<sj.size();i++){
                //段落
                XWPFParagraph firstParagraph = document.createParagraph();
                XWPFRun run = firstParagraph.createRun();
                String ybgcm=(i+1)+"."+SysUtil.toStr(sj.get(i).get("task_date"))+SysUtil.toStr(sj.get(i).get("task_name"))+"-"+SysUtil.toStr(sj.get(i).get("by2"))+" ("+SysUtil.toStr(sj.get(i).get("by3"))+")";
                run.setText(ybgcm);
                run.setBold(true);
                run.setColor("000000");
                run.setFontSize(15);
                
              //段落
                XWPFParagraph Paragraph2 = document.createParagraph();
                XWPFRun run2 = Paragraph2.createRun();
                run2.setBold(false);
                run2.setText("工作内容:"+SysUtil.toStr(sj.get(i).get("task_text")));
                run2.setColor("000000");
                run2.setFontSize(15);
                
              //段落
                XWPFParagraph Paragraph3 = document.createParagraph();
                XWPFRun run3 = Paragraph3.createRun();
                run3.setBold(false);
                run3.setText("附件:");
                run3.setColor("000000");
                run3.setFontSize(15);
                
                //获取附件
                String sqlString ="select t.file_info_id,t.file_extend,t.file_info_c3,t.file_filename from T_P_FILE_INFO t   where t.data_flag <> 'D' and t.file_index ='"+SysUtil.toStr(sj.get(i).get("task_id"))+"'";
                List<Map<String, Object>> fjList=dBSelect(sqlString);
                for(int j=0;j<fjList.size();j++){
                    String imagePath =SysUtil.toStr(fjList.get(j).get("file_info_id"))+"."+SysUtil.toStr(fjList.get(j).get("file_extend"));
                    String imgurl = System.getProperty("catalina.home")+"/webapps/webdav/"+imagePath;
                    int format;
                    if(imgurl.endsWith(".emf")) format = XWPFDocument.PICTURE_TYPE_EMF;
                    else if(imgurl.endsWith(".wmf")) format = XWPFDocument.PICTURE_TYPE_WMF;
                    else if(imgurl.endsWith(".pict")) format = XWPFDocument.PICTURE_TYPE_PICT;
                    else if(imgurl.endsWith(".jpeg") || imgurl.endsWith(".jpg")) format = XWPFDocument.PICTURE_TYPE_JPEG;
                    else if(imgurl.endsWith(".png")) format = XWPFDocument.PICTURE_TYPE_PNG;
                    else if(imgurl.endsWith(".dib")) format = XWPFDocument.PICTURE_TYPE_DIB;
                    else if(imgurl.endsWith(".gif")) format = XWPFDocument.PICTURE_TYPE_GIF;
                    else if(imgurl.endsWith(".tiff")) format = XWPFDocument.PICTURE_TYPE_TIFF;
                    else if(imgurl.endsWith(".eps")) format = XWPFDocument.PICTURE_TYPE_EPS;
                    else if(imgurl.endsWith(".bmp")) format = XWPFDocument.PICTURE_TYPE_BMP;
                    else if(imgurl.endsWith(".wpg")) format = XWPFDocument.PICTURE_TYPE_WPG;
                    else {
                        System.err.println("Unsupported picture: " + imgurl +
                        ". Expected emf|wmf|pict|jpeg|png|dib|gif|tiff|eps|bmp|wpg");
                        
                        //不是图片,直接输入超链接
                        appendExternalHyperlink(this.getRequest().getScheme()+"://"+this.getRequest().getServerName()+":"+this.getRequest().getServerPort()+"/webdav/"+imagePath,  
                                fjList.get(j).get("file_filename").toString(), document.createParagraph());
                        continue;
                        }
                    
                    File dir = new File(imgurl);
                    if (dir.exists()) {
                        String picId = document.addPictureData(new FileInputStream(imgurl), format);
                        document.createPicture(picId, document.getNextPicNameNumber(format), 500, 400);
                     }    
                }
                
                
                
            }
            
            
            return document; 
        }
        
  • 相关阅读:
    postman调试参数格式
    Dapper.Contrib.Extensions扩展
    kafka dashborad 安装流程(kafka_exporter + prometheus + grafana)
    Kafka学习入门(windows环境下)
    Windows环境下载安装Kafka
    Windows环境下Zookeeper的安装及启动
    hdu4087(概率dp)
    poj3162(树形dp+线段树)
    Gym
    牛客小白月赛13 小A的柱状图(单调栈)
  • 原文地址:https://www.cnblogs.com/mysterious-killer/p/11928869.html
Copyright © 2020-2023  润新知