使用ORA_EXCEL包在Excel中逐列打印

时间:2013-08-08 08:26:25

标签: oracle plsql

我正在使用ora_excel包生成如下的Excel。

ColumnA 

Row1

Row2

Row3

使用以下程序,

declare

  doc_id    pls_INTEGER:=0;
  sheet_id  pls_INTEGER:=0;
  row_id    pls_INTEGER:=0;

begin

  doc_id   := ora_excel.new_document;
  sheet_id := ora_excel.add_sheet('Sheet 1',doc_id);

  row_id   := ora_excel.add_row;
  ora_excel.set_cell_value('A','Row1', doc_id,sheet_id, row_id);

  row_id   := ora_excel.add_row;
  ora_excel.set_cell_value('A','Row2',doc_id,sheet_id, row_id);

  row_id   := ora_excel.add_row;
  ora_excel.set_cell_value('A','Row3', doc_id,sheet_id, row_id);

  ora_excel.save_to_file('FTP_FOLDER','excel.xlsx',doc_id);

end;

它将Excel生成到特定文件夹中。

现在,我想在打印ColumnB的所有行后向ColumnA添加一些记录,如下所示。

ColumnA ColumnB

Row1     Row1B

Row2     Row2B

Row3     Row3B

我是PL / SQL的新手。

任何人都可以帮我解决这个问题。

是否有导航和更新特定行?

1 个答案:

答案 0 :(得分:0)

试试这个:

declare

  doc_id    pls_INTEGER:=0;
  sheet_id  pls_INTEGER:=0;
  row_id    pls_INTEGER:=0;

begin

  doc_id   := ora_excel.new_document;
  sheet_id := ora_excel.add_sheet('Sheet 1',doc_id);

  row_id   := ora_excel.add_row;
  ora_excel.set_cell_value('A','Row1', doc_id,sheet_id, row_id);
  ora_excel.set_cell_value('B','Row1B', doc_id,sheet_id, row_id);

  row_id   := ora_excel.add_row;
  ora_excel.set_cell_value('A','Row2',doc_id,sheet_id, row_id);
  ora_excel.set_cell_value('B','Row2B', doc_id,sheet_id, row_id);

  row_id   := ora_excel.add_row;
  ora_excel.set_cell_value('A','Row3', doc_id,sheet_id, row_id);
  ora_excel.set_cell_value('B','Row3B', doc_id,sheet_id, row_id);

  ora_excel.save_to_file('FTP_FOLDER','excel.xlsx',doc_id);

end;

点击此链接:http://www.oraexcel.com/documentation/ORA_EXCEL.set_cell_value

如果ColumnA和ColumnB在不同时间和不同来源填充,但在将excel数据写入文件之前,则此代码可能有效:

DECLARE

  doc_id    PLS_INTEGER:=0;
  sheet_id  PLS_INTEGER:=0;
  row_id    PLS_INTEGER:=0;
  v_idx     PLS_INTEGER;

 TYPE t_rowids_t IS TABLE OF PLS_INTEGER INDEXED BY PLS_INTEGER;
 vt_rowids t_rowids_t;
BEGIN

  doc_id   := ora_excel.new_document;
  sheet_id := ora_excel.add_sheet('Sheet 1',doc_id);

  --select from first table

  row_id   := ora_excel.add_row;
  vt_rowids(row_id) := row_id;
  ora_excel.set_cell_value('A','Row1', doc_id,sheet_id, row_id);

  row_id   := ora_excel.add_row;
  vt_rowids(row_id) := row_id;
  ora_excel.set_cell_value('A','Row2',doc_id,sheet_id, row_id);

  row_id   := ora_excel.add_row;
  vt_rowids(row_id) := row_id;
  ora_excel.set_cell_value('A','Row3', doc_id,sheet_id, row_id);

  --select from another table
  v_idx := vt_rowids.FIRST;

  WHILE v_idx IS NOT NULL
  LOOP
        ora_excel.set_cell_value('B','Row1B', doc_id,sheet_id, vt_rowids(v_idx)); 
        ora_excel.set_cell_value('B','Row2B', doc_id,sheet_id, vt_rowids(v_idx));
        ora_excel.set_cell_value('B','Row3B', doc_id,sheet_id, vt_rowids(v_idx));

        v_idx := vt_rowids.NEXT(v_idx);
  END LOOP;

  ora_excel.save_to_file('FTP_FOLDER','excel.xlsx',doc_id);

END;