历史版本2 :自定义上传文件至磁盘 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

1. 问题描述编辑

在定时任务完成之后,有时候需要将文件导出至自定义位置,而不是系统默认位置%FR%WebReport\WEB-INF\schedule,这时候就可以通过自定义附件来处理,通过自定义类文件修改文件导出的位置。

2. 示例编辑

导出excel和pdf,并把生成的对应文件保存在指定路径中去,本例中的路径是放在D盘中。

3. 实现步骤编辑


3.1 编写类文件
定义一个OutputExcel类文件,实现AbstractOutputFileAction接口,具体代码如下:
HTML/XML代码
package com.fr.output;  
  
import java.io.*;  
  
import com.fr.json.JSONException;  
import com.fr.json.JSONObject;  
import com.fr.schedule.output.AbstractOutputFileAction;  
import com.fr.schedule.output.OutputFileAction;  
  
public class OutputExcel extends AbstractOutputFileAction{  
  
    @Override  
    public File[] getFilesToDealWith(File[] files) {  
        return files;  
    }  
  
    @Override  
    public void doFileAction(File[] files) {  
//      OutputStream out=new BufferedOutputStream(new FileOutputStream(new File(files.)));;  
        System.out.println(files[0].getName());  
        for(int i=0;i<files.length;i++){  
            String name=files[i].getName();  
            String path="D:/"+name;  
            BufferedInputStream in=null;  
            OutputStream out=null;  
            try {  
                 out=new BufferedOutputStream(new FileOutputStream(new File(path)));  
                 in=new BufferedInputStream(new FileInputStream(files[i]));  
                byte[] ba=new byte[in.available()];  
                in.read(ba);  
                out.write(ba);  
            } catch (Exception e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }finally{  
                try {  
                if(in!=null){  
                        in.close();  
                }  
                if(out!=null){  
                    out.close();  
                }  
                } catch (IOException e) {  
                    // TODO Auto-generated catch block  
                    e.printStackTrace();  
                }  
                  
            }  
              
        }  
    }  
  
    @Override  
    public boolean isEmailNotification() {  
        // TODO Auto-generated method stub  
        return false;  
    }  
  
    @Override  
    public OutputFileAction analyzeJSON(JSONObject arg0) {  
        // TODO Auto-generated method stub  
        return null;  
    }  
  
    @Override  
    public JSONObject createJSONConfig() throws JSONException {  
        // TODO Auto-generated method stub  
        return null;  
    }  
  
    @Override  
    public String getJsonTag() {  
        // TODO Auto-generated method stub  
        return null;  
    }  
  
}  
编译类文件,将生成的OutputExcel.class放在%FineReport_home%\WebReport\WEB-INF\classes\com\fr\output文件夹下。
注:类文件放的位置只需要与编写类文件里面的package位置对应即可。
3.2 定时任务
参照定时生成日报配置定时任务,到第三步—输出设置的时候,在附件类型后面勾选excel,word,pdf,则可将定时任务结果导出为excel,word以及pdf格式,然后勾选下面的是否自定义附件处理,并在类名处填写正确类名,点击完成即可。如下图:
3.3 效果查看
在D盘下面可以查看到3个不同格式的导出文件,分别为aaaa.xls;aaaa.pdf;aaaa.doc。如下图: