Tutorials

Tutorial

Spalten formatieren

English version

Spalten Format setzen

Spalten werden durch einen Datensatz des Typs t_rec_columns definiert

TYPE t_rec_columns IS RECORD(
     cWidth             PLS_INTEGER
    ,cFormat            VARCHAR2(50)
    ,cAutowidth         BOOLEAN
    ,cHidden            BOOLEAN
    ,cIndex             PLS_INTEGER
    );
cWidth
Spaltenbreite. Zwischen 0 und 255 oder NULL.
cFormat
ID des benutzerdefinierten Zellformats. Wird als Defaultwert für die Zellen in dieser Spalte gesetzt.
cAutowidth
Spaltenbreite automatisch setzen. Wenn eine Breite definiert ist, wird deren Wert als Mimimalbreite der Spalte verwendet. Die Breite wird nur bei Datums- und Zahlfeldern angepasst.

cHidden
Spalte verbergen.
cIndex
Position dieser Spalte in der tabelle. Wenn nicht angegeben wird für die erste Definition Index="1" angenommen. Für jede weitere Spalte wird der Index um 1 hochgezählt. Indizes müssen strikt aufsteigend sein. Ansonsten wird das Arbeitsblattdokument invalid. Indizes müssen nicht lückenlos aufeinander folgen. Ausgelassene Indizes werden mit dem Defaultstil formatiert.

Wird einer dieser Werte nicht angegeben wird der Defaultwert von Excel oder OO-Calc verwendet.

DECLARE
  -- test_10.sql
  v_fileHandle utl_file.FILE_TYPE;
  tab_columns  xml_spreadsheet.t_tab_columns;

BEGIN
  -- set columns  
  tab_columns(1).cWidth       := 100;
  tab_columns(2).cWidth       := 50;
  tab_columns(3).cWidth       := 25;
  tab_columns(4).cHidden      := TRUE;
  tab_columns(5).cAutowidth   := TRUE;

  -- New File
  v_fileHandle   := xml_spreadsheet.createNewFile('DOC','test_10.xml');
  -- open first worksheet
  xml_spreadsheet.newWorksheet(
       v_fileHandle
      ,'Columns'
      ,xml_spreadsheet.g_tab_caption -- Dummy
      ,tab_columns
      );

  -- Write a data row
  xml_spreadsheet.writeData(v_fileHandle,'Width 100');
  xml_spreadsheet.writeData(v_fileHandle,'Width 50');
  xml_spreadsheet.writeData(v_fileHandle,'Width 25');
  xml_spreadsheet.writeData(v_fileHandle,'Hidden');
  xml_spreadsheet.writeData(v_fileHandle,'Autowidth');
  -- New data row
  xml_spreadsheet.newDatarow(v_fileHandle);
  xml_spreadsheet.writeData(v_fileHandle,SYSDATE,xml_spreadsheet.c_date);
  xml_spreadsheet.writeData(v_fileHandle,SYSDATE,xml_spreadsheet.c_date);
  xml_spreadsheet.writeData(v_fileHandle,SYSDATE,xml_spreadsheet.c_date);
  xml_spreadsheet.writeData(v_fileHandle,SYSDATE,xml_spreadsheet.c_date);
  xml_spreadsheet.writeData(v_fileHandle,SYSDATE,xml_spreadsheet.c_date);
  -- New data row
  xml_spreadsheet.newDatarow(v_fileHandle);
  xml_spreadsheet.writeData(v_fileHandle,SYSDATE,xml_spreadsheet.c_dateTime);
  xml_spreadsheet.writeData(v_fileHandle,SYSDATE,xml_spreadsheet.c_dateTime);
  xml_spreadsheet.writeData(v_fileHandle,SYSDATE,xml_spreadsheet.c_dateTime);
  xml_spreadsheet.writeData(v_fileHandle,SYSDATE,xml_spreadsheet.c_dateTime);
  xml_spreadsheet.writeData(v_fileHandle,SYSDATE,xml_spreadsheet.c_dateTime);

  -- close worksheet
  xml_spreadsheet.closeWorksheet(
           v_fileHandle
          ,0 -- fix no rows in first worksheet when scrolling
          );

  -- Close file
  xml_spreadsheet.closeFile(v_fileHandle);

END;
/
Ergebnisse für Test 10
ExcelOO-Calc
MS-Excel Output für Test 10 OO-Calc Output für Test 10

Bilder zum Vergrößern anklicken

Unterschiede

  • Excel und OO-Calc zeigen Datum und Zeit mit verschiedenen Formatierungen
  • Ecel ignoriert die Spaltenbreite wenn der Inhalt nicht hineinpasst. Möglicherweise ist autowidth per Default gesetzt
  • OO-Calc setzt die Spaltenbreite wie angegeben. Die Breite für autowidth scheint die Defaultbreite der Spalte zu sein, da datetime umgebrochen wird.