我正在使用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的新手。
任何人都可以帮我解决这个问题。
是否有导航和更新特定行?
答案 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;