2017-07-13 6 views
0

Ich verwende Jasper Report API 4.5 (bereit für die Aktualisierung, wenn für diese Lösung erforderlich). Mit Jasper Report exportiere ich Berichte nach HTML, Excel, CSV und PDF. Eine Situation, auf die ich gestoßen bin, ist, dass, wenn Daten eine gültige Excel-Formel haben, beim Exportieren von Daten in Excel und CSV und Anzeigen von Dateien in MS Excel Excel-Formeln ausgeführt werden. Dies führt zu einem Sicherheitsproblem, da einige Daten eine Excel-Formel haben, um eine Aktion auf dem lokalen Computer auszuführen, die dann das System beschädigen kann.Jasper-Bericht Excel-CSV-Export: Verhindern Ausführen von Excel-Formel

Wir können die Daten zum Zeitpunkt des Einfügens nicht validieren. Dies könnte das Problem beheben. Derzeit gibt es jedoch keine Datenvalidierung, um das Einfügen einer Excel-Formel zu verhindern. Die bevorzugte Lösung für mich ist die Verwaltung von Jasper Report.

Meine Frage ist, gibt es einen Mechanismus oder Export-Parameter, die verhindern können Excel-Formel ausgeführt werden? Oder gibt es eine Möglichkeit, Daten so zu drucken, wie sie sind, und die Excel-Formel zu ignorieren?

+0

Die [XLS Formel Sample] (http://jasperreports.sourceforge.net/sample.reference/xlsformula/index.html#xlsformula) Thema beschreibt, wie xls Formeln Pflege –

+0

haben den Zusammenhang geprüft. Aber es sagt nichts darüber aus, die Excel-Formel zu ignorieren. Ich bin mehr daran interessiert, keine Excel-Formel auszuführen, als sie auszuführen. Diese Frage gilt für den Excel-Export und den CSV-Export, da beide Dateiformate aus MS Excel gelesen werden. –

+0

Was meinst du zu ignorieren? Wenn Sie die 'net.sf.jasperreports.export.xls.formula' -Eigenschaft nicht verwenden, wird der Text von textField nur Text sein. Zum Beispiel, '1 + 1' - es wird nur Text sein, nicht die Summe (' 2'). Das Zitat aus dem Artikel, den ich Ihnen geschrieben habe: 'Standardmäßig werden alle Daten nur als Text exportiert. ' –

Antwort

0

Für Excel-Export:

Wir können Apache POI oder SmartXLS API verwenden Zelltyp Text extern einzustellen, um gleiches Ergebnis aus der Datenbank zu erhalten.

Für Apache POI können wir Zellenformattyp als "@", hier ist der Link von Apache POI javadoc gesetzt.

Für SmartXLS können wir Arbeitsmappe Bereich Stil festlegen Formattyp als Text, Code-Schnipsel für sie würde wie unten eingestellt werden:

RangeStyle rangeStyle = workBook.getRangeStyle(1, 0, 50, 0); 
rangeStyle.setCustomFormat("@"); 

Für CSV-Export:

Upgraded Jasper 6.3. Es gibt eine Funktion zum Hinzufügen eines Gehäuses zum CSV-Feld. Per Voreinstellung haben Sie Excel-Anführungszeichen (') als Feldgehäuse, damit das Feld als Formel ausgeführt werden kann. Um dies zu vermeiden, können wir das Feld "Gehäuse" auf (`) setzen.

SimpleCsvExporterConfiguration reportExportConf = new SimpleCsvExporterConfiguration(); 

reportExportConf.setFieldEnclosure("`"); 
reportExportConf.setForceFieldEnclosure(true); 
Verwandte Themen