【发布时间】:2016-09-20 14:58:40
【问题描述】:
我正在使用 SQL Server 开发 Java Web 应用程序和报告服务器,我想知道是否可以使用 SOAP Web 服务将报告从 SSRS 呈现到我的 Java 应用程序。
我正在使用SSRS-API 获取有关我的 SSRS 的信息,例如文件夹名称、报告名称……但我无法呈现我的报告或将其上传为 PDF 或其他扩展名。
有什么建议吗?
谢谢
编辑
我使用了上面提到的SSRS api(SSRS-API)的下载功能(downloadReport),这里是函数的代码:
public void downloadReport(final String path, final String filename) {
final File file = new File(filename);
final String physicalName = toPhysicalFileName(path);
info("Downloading Report with symbolic name " + path + " to " + file);
final byte[] data = _soap.getReportDefinition(physicalName);
try (final FileOutputStream out = new FileOutputStream(file)) {
out.write(data);
} catch (final IOException ioe) {
final String message = "Failed to download report with symbolic name " + path + " to " + file;
LOG.warning(message);
if (file.exists() && !file.delete()) {
throw new IllegalStateException(message + " and failed to delete temporary file", ioe);
} else {
throw new IllegalStateException(message, ioe);
}
}
}
这是我使用的调用这个函数的函数:
public void downloadReport() {
ssrs.downloadReport('Path/Report name', 'C:\\PATH\\TO\\A\\FOLDER\\REPORT.XML');
}
在给定的路径 (C:/PATH/TO/A/FOLDER/REPORT.XML) 我得到一个这样的 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns:cl="http://schemas.microsoft.com/sqlserver/reporting/2010/01/componentdefinition" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition">
<AutoRefresh>0</AutoRefresh>
<DataSources>
<DataSource Name="PercallAnalysisDW">
<DataSourceReference>Entrepôt de données Percall Analysis</DataSourceReference>
<rd:SecurityType>None</rd:SecurityType>
<rd:DataSourceID>3a3e3aa4-c6d6-4b44-80f0-f18a9ecd2eac</rd:DataSourceID>
</DataSource>
</DataSources>
<DataSets>
<DataSet Name="DeliveryMarginCumuleDS">
<SharedDataSet>
<SharedDataSetReference>DeliveryMarginCumuleDS</SharedDataSetReference>
</SharedDataSet>
<Fields>
<Field Name="Date">
<DataField>Date</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="Projet">
<DataField>Projet</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="LABOR_facturé">
<DataField>LABOR_facturé</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="TL_facturé">
<DataField>TL_facturé</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="Coût_total">
<DataField>Coût_total</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="DM">
<DataField>DM</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="Revenu">
<Value>=Fields!LABOR_facturé.Value + Fields!TL_facturé.Value</Value>
</Field>
</Fields>
</DataSet>
</DataSets>
<ReportSections>
<ReportSection>
<Body>
<ReportItems>
<Tablix Name="Tablix1">
<TablixBody>
...
【问题讨论】:
标签: java web-services sql-server-2008 soap reporting-services