导出接口
BaskReport提供了一些Java API实现导出功能,可以用不同的类实现CSV,Excel,PDF,Word的导出,对应的导出类为:
- com.basksoft.report.core.export.csv.CsvExport
- com.basksoft.report.core.export.excel.ExcelExport
- com.basksoft.report.core.export.excel.MultiExcelExport(多文件导出)
- com.basksoft.report.core.export.pdf.PdfExport
- com.basksoft.report.core.export.pdf.MultiPdfExport(多文件导出)
- com.basksoft.report.core.export.word.WordExport
这些类都对应有如下的方法
public void export(ReportInstance report,OutputStream outputStream) {
//...
}
public void export(ReportInstance report,int pageIndex,OutputStream outputStream) {
//...
}
分别对应为导出所有和导出指定页内容,其中的ReportInstance对象可以容过如下的方法创建
FileIdentity identity = new FileIdentity(fileId, version);
ReportInstance reportInstance=ReportFactory.getInstance().makeReport(identity, parametersMap);
FileIdentity的两个构造函数:
- fileId: 文件的ID
- version: 文件的版本,可以为空,为空情况下就是当前设计状态的文件,你也可以指定一个版本进行文件导出
ReportFactory的makeReport的第二个参数对应为报表的参数。如果没有参数可以创建一个空的HahsMap对象。 参考代码
BaskFile baskFile = FileManager.ins.loadFile(1501);
FileIdentity identity = new FileIdentity(1501, baskFile.getVersion());
ReportInstance reportInstance=ReportFactory.getInstance().makeReport(identity, new HashMap<String, Object>());
FileOutputStream fop = null;
File file;
try {
file = new File("c:/temp/order.pdf");
// if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
}
fop = new FileOutputStream(file);
//导出报表
com.basksoft.report.core.export.pdf.PdfExport.getInstance().export(reportInstance, fop);
fop.flush();
fop.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (fop != null) {
fop.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
多文件导出
多文件导出目前支持Excel和PDF,可以用com.basksoft.report.core.export.excel.MultiExcelExport或com.basksoft.report.core.export.pdf.MultiPdfExport,接口说明:
public void export(ReportInstance[] reports, OutputStream outputStream) {
//..
}
Excel多文件导出多个报表会被合并到一个Excel的多个Sheet页中, PDF则是页面的合并