openDocument (SpreadsheetUtils)
Versionshinweise | 17.2.06, 18.1 |
---|
Code
ISpreadsheetResultOpen openDocument(String documentPk, SpreadsheetOptions options)
Beschreibung
Kopiert die Tabellenkalkulationsdatei des referenzierten Dokumentensatzes in ein temporäres Verzeichnis auf dem Server und öffnet diese Kopie.
Hierbei wird der Name der kopierten Datei gemäß den Angaben aus dem Dokumentensatz erzeugt und steht im Rückgabeobjekt ISpreadsheetResultOpen zur Verfügung.
Folgende Eingabeformate werden unterstützt:
- Microsoft Excel: XLS, XLSX, XLSB, XLTX, XLTM, XLSM, XML
- OpenOffice: ODS
- Text: CSV, Tab-Delimited, TXT
Hinweise:
- Diese Methode steht nur in der Skriptaktion zur Verfügung (Server).
- Die kopierte Datei sollte im Nachgang mittels FileUtils.deleteFile wieder entfernt werden. Es erfolgt kein automatisches Löschen.
- Zur Aktualisierung des Dokuments im Dokumentensatzes ist der Befehl DocumentUtils.setDocument zu verwenden (siehe Codebeispiel). Hierdurch wird die korrekte Aktualisierung des Dokumentensatzes mit Folgeaktionen sichergestellt.
Parameter
- documentPk
Der Primärschlüssel des zugehörigen Dokumentensatzes. - options
Optionaler Parameter für das Öffnen von Excel und textbasierten Tabellenkalkulationsdateien, z.B. csv. Im Falle von textbasierten Dateien können sowohl Separator als auch Zeichensatz der Textdatei beim Auslesen angegeben werden. Im Falle von Exceldateien wird der Parameter Passwort zur Entschlüsselung der Exceldatei verwendet.
Rückgabe
Ergebnis des Öffnens der Tabellenkalkulationsdatei.
Folgende Methoden stehen in dem Rückgabeobjekt ISpreadsheetResultOpen zur Verfügung
- Spreadsheet getSpreadsheet()
Repräsentiert die kopierte Tabellenkalkulationsdatei - String getFileName()
Liefert den Namen der temporär kopierten Tabellenkalkulationsdatei - boolean isSuccessful()
War das Öffnen der kopierten Tabellenkalkulationsdatei erfolgreich? - String getErrorCode()
Liefert den Fehlercode, falls das Kopieren und Öffnen der Tabellenkalkulationsdatei nicht erfolgreich war. Die Fehlercodes stehen als Konstanten in der Klasse SpreadsheetUtils zur Verfügung, z.B.SpreadsheetUtils.SPREADSHEET_ERRORCODE_GENERAL Mit Hilfe der Fehlercodes können individuelle Ausgaben im Scripting hinterlegt werden. Folgende Fehlercodes stehen zur Verfügung:- SpreadsheetUtils.SPREADSHEET_ERRORCODE_FILE_NOTFOUND
Die angegebene Datei konnte nicht gefunden werden. - SpreadsheetUtils.SPREADSHEET_ERRORCODE_FILE_NOTSUPPORTED
Dieser Dateityp wird als Tabellenkalkulationsdatei nicht unterstützt. - SpreadsheetUtils.SPREADSHEET_ERRORCODE_FILE_PASSWORDPROTECTED
Die angegebene Datei ist mit einem Passwortschutz versehen. - SpreadsheetUtils.SPREADSHEET_ERRORCODE_GENERAL
Ein allgemeiner Fehler ist bei der Bearbeitung der Tabellenkalkulationsdatei aufgetreten.
- SpreadsheetUtils.SPREADSHEET_ERRORCODE_FILE_NOTFOUND
Beispiele
/* Example for open and saving spreadsheet file of a document entry */
String documentPk = "gn5is1boula66fDo";
IScriptWorkSpace workSpace = WorkSpaceScriptUtils.searchEntry(documentPk, "Document");
if (WorkSpaceScriptUtils.getSize(workSpace)!=1)
{
// .... handle document entry not found
return;
}
IContainer documentAC = WorkSpaceScriptUtils.getEntry(workSpace, 0);
ISpreadsheetResultOpen openResult = SpreadsheetUtils.openDocument(documentPk);
if (!openResult.isSuccessful())
{
String errorCode = openResult.getErrorCode();
if (SpreadsheetUtils.SPREADSHEET_ERRORCODE_FILE_NOTFOUND.equals(errorCode))
{
//...handle FILE_NOTFOUND
ScriptUtils.debug("Error: Die angegebene Exceldatei " + openResult.getFileName() + " konnte nicht gefunden werden.");
}
else if (SpreadsheetUtils.SPREADSHEET_ERRORCODE_FILE_NOTSUPPORTED.equals(errorCode))
{
//... handle FILE_NOTSUPPORTED
}
else if (SpreadsheetUtils.SPREADSHEET_ERRORCODE_FILE_PASSWORDPROTECTED.equals(errorCode))
{
//....handle FILE_PASSWORDPROTECTED
}
else
{
//....handle SPREADSHEET_ERRORCODE_GENERAL
}
/** do furthermore */
return;
}
Spreadsheet excel = openResult.getSpreadsheet();
....
// modify spreadsheet
....
SpreadsheetUtils.save(excel);
DocumentUtils.setDocument(documentAC, openResult.getFileName());
....
SpreadsheetUtils.close(excel);
/** do not forget to delete copied document file */
FileUtils.deleteFile(openResult.getFileName());