SSRS Berichte Rendern, mithilfe von JAVA-und SOAP-Web-Service

Arbeite ich an einer Java-Web-Anwendung und Reporting-Server mit SQL-Server und ich will wissen, ob seine mögliche, um render-Reports von SSRS auf meine Java-Anwendung mithilfe der SOAP-Web-Service.

Ich bin mit dem SSRS-API, um Informationen zu bekommen über meine SSRS-wie Ordner-name, Berichte, Namen, … aber ich bin nicht in der Lage ist zu Rendern, meine Berichte, oder laden Sie es im PDF-oder anderen Erweiterungen.

Jede Anregung?

Dank

BEARBEITEN

Benutzte ich die download-Funktion (downloadReport) von SSRS-api, die ich oben erwähnt (SSRS-API), hier ist der code der Funktion :

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);

        }
    }
}

Und hier ist die Funktion, die ich verwenden Sie diese Funktion aufrufen :

public void downloadReport() {
    ssrs.downloadReport('Path/Report name', 'C:\\PATH\\TO\\A\\FOLDER\\REPORT.XML');
}

Und in den vorgegebenen Pfad (C:/PATH/TO/A/FOLDER/REPORT.XML) bekomme ich eine XML Datei wie diese :

<?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>
                ...



2 Replies
  1. 1

    Hier ist ein Artikel aus eine andere Antwort, aber bewusst sein, dass es von 2005:
    JavaWorld. Und hier ist eine Antwort aus einer ähnlichen Frage auf einem MSDN board:

    „Aber, Berichts-viewer-Steuerelement wird nur unterstützt, in der .Net
    – Anwendung. So ist es unwahrscheinlich, dass die Integration der reports mit java
    basierten front-end, ohne die Veröffentlichung neuer browser-Seiten. Meine
    Vorschlag ist, verwenden Sie den URL-Zugriff auf die Berichte in der Web-Anwendung.
    Jedoch, wenn Sie dies tun, wird der Bericht geöffnet, in dem neue browser
    Seite.“

    • Danke für Eure Antworten ich werde einen Blick auf alle diese und ich gebe dir ein feedback
    • Hallo @RussellFox ich bearbeitet habe, meine Frage zu ergänzen, was ich getan habe, kann ich jetzt die XML-Beschreibung von meinem Bericht, und ich will wissen, ob Sie eine Idee haben, wie kann ich konvertieren Sie diese Datei auf einen Bericht wie PDF oder EXCEL.
  2. 1

    Ich löste das problem durch die Erstellung von berichten mit der URL, hier ist die Funktion, die mir erlaubt, um Berichte zu generieren :

    public void downloadReportExcel(String path) {
        try {
            String url = "http://" + SSRS_IP + "/ReportServer?/" + path + "&rs:Format=Excel";
    
            FacesContext.getCurrentInstance().getExternalContext().redirect(url);
    
            return;
        } catch (IOException e) {
            throw new FacesException(e);
        }
    }

    Die Funktion einen Pfad im Parameter und leiten mich auf die server-url mit 2 Parametern:

    • ?/Pfad : gibt den vollständigen Pfad (von der root-Ordner) den Bericht zu generieren
    • rs:Format=Excel : ist das format der generation (hier möchte ich den Bericht exportieren nach Excel, aber Es kann PDF, wie : &rs:Format=PDF)

    danke für deine Hilfe @RussellFox, werde ich versuchen für die .NET-Lösung

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.