API设置导出excel的密码
一些客户由于自身业务逻辑的需要,对安全性要求比较高,所以可能需要对导出的excel做加密处理,而在设计器中给导出的excel设置密码是很容易的,但是对于一些纯java开发,用代码来生成报表的客户,就只能够通过api来设置一张报表导出excel时的密码了,下面就介绍一下如何用api设置导出excel的密码。
实现方法:
在润乾的api中,导出文件的一些信息是存在于类ExportConfig中,也就是说对于导出的一些设置都通过这个类来实现,对于设置导出excel的密码,可以使用这个类的setExcelFilePassword()方法来实现,而对于报表定义ReportDefine可以通过getExportConfig()方法来获取到报表的导出设置。
需要注意的是给导出的excel设置的密码不能是直接的明文字符串,需要通过润乾的密码加密处理类PwdUtils类处理一下,处理后的密码才能设置给报表。导出excel并加密的代码如下:
import com.runqian.base4.util.PwdUtils;
import com.runqian.report4.model.ReportDefine;
import com.runqian.report4.model.engine.ExtCellSet;
import com.runqian.report4.usermodel.Context;
import com.runqian.report4.usermodel.Engine;
import com.runqian.report4.usermodel.ExportConfig;
import com.runqian.report4.usermodel.IReport;
import com.runqian.report4.util.ReportUtils;
public class TestExcelReport {
public void ExportExcelWithPasswd(String raqPath,String excelPath,String myPasswd) throws Exception{
PwdUtils pdwutil = new PwdUtils();//密码处理类
ReportDefine rd = (ReportDefine)ReportUtils.read(raqPath);
ExportConfig ec = rd.getExportConfig();//获取报表的导出设置
String newpasswd = pdwutil.encrypt(myPasswd);//对密码做处理
ec.setExcelFilePassword(newpasswd);//设置处理后的密码
rd.setExportConfig(ec);//报表装载导出设置
Context ctx = new Context();//构造报表计算环境
Engine engine = new Engine(rd,ctx);//构造报表计算引擎
IReport ireport = engine.calc();//计算报表
ExtCellSet.setLicenseFileName(“E:\\reportHome\\webapps\\demo\\WEB-INF\\classes\\runqianWindowServer.lic”);//设置授权
try {
ReportUtils.exportToExcel(excelPath, ireport, false);//导出
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
TestExcelReport test = new TestExcelReport();
String myPasswd = “123″;
String excelPath = “D:\\12.xls”;
String raqPath=“E:\\testFile\\12.raq”;
test.ExportExcelWithPasswd(raqPath, excelPath, myPasswd);
}
}
运行上面的代码,可以看到excel生成到自己指定的路径了,打开excel可以看到需要输入密码,如下图所示:
成功输入密码后,可以看到excel被打开了:
这样就实现了api导出excel并设置密码的需求。