Экспортируйте данные в Excel из Oracle Forms 12c с помощью Client_OLE2

#excel #oracle #oracleforms

#превосходить #Oracle #оракулоформы

Вопрос:

Пожалуйста, помогите мне поделиться примером процедуры экспорта данных в excel из oracle forms с помощью client_ole2.

Комментарии:

1. Какая операционная система является вашим сервером приложений ?

2. Привет, извините за поздний ответ, операционная система Windows существует на сервере приложений

Ответ №1:

Тогда это должно сработать:

 declare  source_cursor Integer;  l_colCnt Number Default 0;  l_descTbl Dbms_sql.desc_tab;  newval1 Varchar2 (4000);  application CLIENT_OLE2.OBJ_TYPE;  workbooks CLIENT_OLE2.OBJ_TYPE;  workbook CLIENT_OLE2.OBJ_TYPE;  worksheets CLIENT_OLE2.OBJ_TYPE;  worksheet CLIENT_OLE2.OBJ_TYPE;  colour CLIENT_OLE2.OBJ_TYPE;  cell CLIENT_OLE2.OBJ_TYPE;  RANGE CLIENT_OLE2.OBJ_TYPE;  range_col CLIENT_OLE2.OBJ_TYPE;  range_row CLIENT_OLE2.OBJ_TYPE;  args CLIENT_OLE2.LIST_TYPE;  rows_processed Number;  row_n Number;  VAL Varchar2 (100);  x Number;  filename Varchar2 (200);  csql varchar2(4000); BEGIN  csql := 'select column1, column2 from table1';  BEGIN  source_cursor := Dbms_Sql.open_Cursor;  Dbms_Sql.parse (source_cursor, cSql, 2);  Dbms_Sql.describe_Columns (c =gt; source_cursor, col_cnt =gt; l_colCnt, desc_t =gt; l_descTbl);  EXCEPTION  When Others  Then  def_error (SQLERRM);  RETURN;  END;   application := CLIENT_OLE2.CREATE_OBJ ('Excel.Application');  CLIENT_OLE2.SET_PROPERTY (application, 'Visible', 'False');  workbooks := CLIENT_OLE2.GET_OBJ_PROPERTY (application, 'Workbooks');  workbook := CLIENT_OLE2.GET_OBJ_PROPERTY (workbooks, 'Add');  worksheets := CLIENT_OLE2.GET_OBJ_PROPERTY (workbook, 'Worksheets');  args := CLIENT_OLE2.CREATE_ARGLIST;  CLIENT_OLE2.ADD_ARG (args, 1);  worksheet := CLIENT_OLE2.GET_OBJ_PROPERTY (worksheets, 'Item', args);  CLIENT_OLE2.DESTROY_ARGLIST (args);   For T In 1 .. l_colCnt  LOOP  BEGIN  Dbms_Sql.define_Column (source_cursor, T, newval1, 4000);  args := CLIENT_OLE2.CREATE_ARGLIST;  CLIENT_OLE2.ADD_ARG (args, 1);  CLIENT_OLE2.ADD_ARG (args, T); --Next column  cell := CLIENT_OLE2.GET_OBJ_PROPERTY (worksheet, 'Cells', args);  CLIENT_OLE2.DESTROY_ARGLIST (args);  colour := client_ole2.get_obj_property (cell, 'Borders');  client_ole2.set_property (colour, 'ColorIndex', 1);  client_ole2.Release_obj (colour);  colour := client_ole2.get_obj_property (cell, 'Interior');  client_ole2.set_property (colour, 'ColorIndex', 15);  client_ole2.Release_obj (colour);  CLIENT_OLE2.SET_PROPERTY (cell, 'Value', l_descTbl (T).col_name);  CLIENT_OLE2.Release_obj (cell);  EXCEPTION  When Others  Then  Null;  END;  END LOOP;   Rows_processed := Dbms_Sql.EXECUTE (source_cursor);  row_n := 1;   LOOP  IF Dbms_Sql.fetch_Rows (source_cursor) gt; 0  Then  For T In 1 .. l_colCnt  LOOP  BEGIN  Dbms_Sql.column_Value (source_cursor, T, newval1);  args := CLIENT_OLE2.CREATE_ARGLIST;  CLIENT_OLE2.ADD_ARG (args, row_n   1);  CLIENT_OLE2.ADD_ARG (args, T); --Next column  cell := CLIENT_OLE2.GET_OBJ_PROPERTY (worksheet, 'Cells', args);  CLIENT_OLE2.DESTROY_ARGLIST (args);  colour := client_ole2.get_obj_property (cell, 'Borders');  client_ole2.set_property (colour, 'ColorIndex', 1);  client_ole2.Release_obj (colour);  CLIENT_OLE2.SET_PROPERTY (cell, 'Value', newval1);  CLIENT_OLE2.Release_obj (cell);  EXCEPTION  When Others  Then  EXIT;  END;   newval1 := Null;  END LOOP;  Else  EXIT;  END IF;   row_n := row_n   1;  END LOOP;   Dbms_Sql.close_Cursor (source_cursor);  -- Autofit columns  RANGE := CLIENT_OLE2.GET_OBJ_PROPERTY (worksheet, 'UsedRange');  range_col := CLIENT_OLE2.GET_OBJ_PROPERTY (RANGE, 'Columns');  range_row := CLIENT_OLE2.GET_OBJ_PROPERTY (RANGE, 'Rows');  CLIENT_OLE2.INVOKE (range_col, 'AutoFit');  CLIENT_OLE2.INVOKE (range_row, 'AutoFit');  CLIENT_OLE2.Release_obj (RANGE);  CLIENT_OLE2.Release_obj (range_col);  CLIENT_OLE2.Release_obj (range_row);  -- Get filename and path  filename := 'Yourexcel.xls';   -- Save as worksheet  IF Nvl (filename, '0') lt;gt; '0'  Then  CLIENT_OLE2.SET_PROPERTY (application, 'Visible', 'True');  args := CLIENT_OLE2.CREATE_ARGLIST;  CLIENT_OLE2.ADD_ARG (args, filename);  CLIENT_OLE2.INVOKE (worksheet, 'SaveAs', args);  CLIENT_OLE2.DESTROY_ARGLIST (args);  END IF;  -- CLIENT_OLE2.INVOKE( workbook ,'Close');  CLIENT_OLE2.Release_obj (worksheet);  CLIENT_OLE2.Release_obj (worksheets);  CLIENT_OLE2.Release_obj (workbook);  CLIENT_OLE2.Release_obj (workbooks);  CLIENT_OLE2.Release_obj (application); END;