Josber,
Usando a ligação ao Excel por COM/OLE2 penso que é possível.
Eu tenho algum código em que utilizo o "Range" para formatar a folha de Excel:
Na Working:
Código COBOL:
WORKING-STORAGE SECTION.
01 EXCEL OBJECT REFERENCE OLE.
01 WORKBOOK OBJECT REFERENCE OLE.
01 SHEETS OBJECT REFERENCE OLE.
01 WORKSHEET OBJECT REFERENCE OLE.
01 CELL OBJECT REFERENCE OLE.
01 COLUMNS OBJECT REFERENCE OLE.
01 WCOLUMN OBJECT REFERENCE OLE.
01 OBJRANGE OBJECT REFERENCE OLE.
01 FITRANGE OBJECT REFERENCE OLE.
*******
01 ARRAYOBJ OBJECT REFERENCE COM-ARRAY.
01 LONG-INT-TYPE PIC S9(9) COMP-5 VALUE 12.
01 ARRAY-DIMENSION PIC S9(9) COMP-5 VALUE 2.
01 AXIS-1 PIC S9(9) COMP-5 VALUE 22.
01 AXIS-2 PIC S9(9) COMP-5 VALUE 22.
01 APPLICATION PIC X(20) VALUE "EXCEL.APPLICATION".
01 OLE-TRUE PIC 1(1) BIT VALUE B"1".
01 FILLER PIC 1(7) BIT.
01 OLE-FALSE PIC 1(1) BIT VALUE B"0".
01 FILLER PIC 1(7) BIT.
Na PROCEDURE:
Código COBOL:
INVOKE OLE "CREATE-OBJECT" USING APPLICATION RETURNING EXCEL.
INVOKE EXCEL "GET-WORKBOOKS" RETURNING WORKBOOK.
INVOKE WORKBOOK "ADD" RETURNING WORKBOOK.
INVOKE WORKBOOK "GET-WORKSHEETS" RETURNING SHEETS.
INVOKE SHEETS "GET-ITEM" USING S-INDEX RETURNING WORKSHEET.
Código COBOL:
INVOKE WORKSHEET "GET-RANGE" USING INIRANGE RETURNING OBJRANGE.
INVOKE OBJRANGE "SET-VALUE" USING ARRAYOBJ.
*******
************ CALCULAR O RANGE DE CADA COLUNA PARA FORMATAR CAMPO
************ UTILIZANDO O RANGE DAS COLUNAS/LINHAS UTILIZADAS
************ VAI FAZER O AUTOFIT (ALARGAR AS COLUNAS)
*******
INVOKE WORKSHEET "GET-USEDRANGE" RETURNING OBJRANGE.
INVOKE OBJRANGE "GET-ENTIRECOLUMN" RETURNING FITRANGE.
INVOKE FITRANGE "AUTOFIT".
Se puderes utilizar COM/OLE2 pode ser que se consiga fazer o que pretendes.
Un saludo,
Rui Pinto