API设置导出excel的密码

客户需求:

一些客户由于自身业务逻辑的需要,对安全性要求比较高,所以可能需要对报表展现与输出" target="_blank" class="geeznLink9">导出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并设置密码的需求。