Skip to main content
Skip table of contents

openDocument (SpreadsheetUtils)

Versionshinweise

17.2.06, 18.1

Code

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

Beispiele

GROOVY
/* 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());
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.