how to wrap text in OLE package
569251Oct 20 2009 — edited Oct 21 2009hi guys,
I am using oracle forms 6i ,one of the user requirements is to export the data in the block to excel file ,i am using the following code:
PROCEDURE EXPORT_TO_EXCEL IS
application OLE2.OBJ_TYPE;
workbooks OLE2.OBJ_TYPE;
workbook OLE2.OBJ_TYPE;
worksheets OLE2.OBJ_TYPE;
worksheet OLE2.OBJ_TYPE;
cell OLE2.OBJ_TYPE;
range OLE2.OBJ_TYPE;
range_col OLE2.OBJ_TYPE;
args OLE2.LIST_TYPE;
arg1 OLE2.LIST_TYPE;
form_name VARCHAR2(100);
f_block VARCHAR2(100);
l_block VARCHAR2(100);
f_item VARCHAR2(100);
l_item VARCHAR2(100);
cur_block VARCHAR2(100) := 'CSA_V_CONTRACT';
cur_item VARCHAR2(100) := NAME_IN('system.current_item');
cur_record VARCHAR2(100) := NAME_IN('system.cursor_record');
item_name VARCHAR2(100);
baslik VARCHAR2(100);
filename VARCHAR2(100);
row_n NUMBER;
col_n NUMBER;
BEGIN
-- Start Excel
application := OLE2.CREATE_OBJ('Excel.Application');
OLE2.SET_PROPERTY(application, 'Visible', 'True');
workbooks := OLE2.GET_OBJ_PROPERTY(application, 'Workbooks');
workbook := OLE2.GET_OBJ_PROPERTY(workbooks, 'Add');
worksheets := OLE2.GET_OBJ_PROPERTY(workbook, 'Worksheets');
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, 1);
worksheet := OLE2.GET_OBJ_PROPERTY(worksheets, 'Item', args);
OLE2.DESTROY_ARGLIST(args);
GO_BLOCK('CSA_V_CONTRACT');
baslik := GET_BLOCK_PROPERTY('CSA_V_CONTRACT', FIRST_ITEM);
f_item := 'CSA_V_CONTRACT' || '.' || GET_BLOCK_PROPERTY('CSA_V_CONTRACT', FIRST_ITEM);
l_item := 'CSA_V_CONTRACT' || '.' || GET_BLOCK_PROPERTY('CSA_V_CONTRACT', LAST_ITEM);
FIRST_RECORD;
LOOP
item_name := f_item;
row_n := NAME_IN('SYSTEM.CURSOR_RECORD');
col_n := 1;
LOOP
IF GET_ITEM_PROPERTY(item_name,ITEM_TYPE) !='BUTTON' OR GET_ITEM_PROPERTY(ITEM_NAME,ITEM_TYPE)!='CHECKBOX' THEN
IF row_n = 1 THEN
baslik := NVL(GET_ITEM_PROPERTY(item_name, PROMPT_TEXT), baslik);
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, row_n);
OLE2.ADD_ARG(args, col_n);
cell := OLE2.GET_OBJ_PROPERTY(worksheet, 'Cells', args);
---- ole2.set_property(cell, 'WrapText', 'True'); ----FOR TESTING ONLY
OLE2.DESTROY_ARGLIST(args);
OLE2.SET_PROPERTY(cell, 'Value', baslik);
OLE2.RELEASE_OBJ(cell);
END IF;
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, row_n + 1);
OLE2.ADD_ARG(args, col_n);
cell := OLE2.GET_OBJ_PROPERTY(worksheet, 'Cells', args);
OLE2.DESTROY_ARGLIST(args);
IF GET_ITEM_PROPERTY(ITEM_NAME,DATATYPE) = 'NUMBER' THEN
OLE2.SET_PROPERTY(cell, 'NumberFormat', '@');
END IF;
IF GET_ITEM_PROPERTY(item_name, DATATYPE) = 'CHAR' THEN
OLE2.SET_PROPERTY(cell, 'Value', '''' || NAME_IN(item_name));
ELSE
OLE2.SET_PROPERTY(cell, 'Value', NAME_IN(item_name));
END IF;
OLE2.RELEASE_OBJ(cell);
col_n := col_n + 1;
END IF;
IF item_name = l_item THEN
EXIT;
END IF;
baslik := GET_ITEM_PROPERTY(item_name, NEXTITEM);
item_name := 'CSA_V_CONTRACT'|| '.' || GET_ITEM_PROPERTY(item_name, NEXTITEM);
END LOOP;
EXIT WHEN NAME_IN('system.last_record') = 'TRUE';
NEXT_RECORD;
END LOOP;
range := OLE2.GET_OBJ_PROPERTY(worksheet, 'UsedRange');
range_col := OLE2.GET_OBJ_PROPERTY(range, 'Columns');
OLE2.INVOKE( range_col, 'AutoFit' );
ole2.INVOKE(RANGE_COL,'Wraptext');----FOR TESTING
/**********************************************************/
----OLE2.INVOKE(application,'Save');
OLE2.INVOKE(application,'Quit');
/****************************************************************/
OLE2.RELEASE_OBJ(range);
OLE2.RELEASE_OBJ(range_col);
OLE2.RELEASE_OBJ(worksheet);
OLE2.RELEASE_OBJ(worksheets);
OLE2.RELEASE_OBJ(workbook);
OLE2.RELEASE_OBJ(workbooks);
OLE2.RELEASE_OBJ(application);
GO_BLOCK(cur_block);
GO_RECORD(cur_record);
GO_ITEM(cur_block || '.' || cur_item);
END;
the data is exported on the excel file but i need to wrap the text in case if it is too long ,can anaybody help on this and where to place it in the code .
thanks in advance,
Ahmed.