2013-08-08 1 views
1

다음과 같이 Excel을 생성하기 위해 ora_excel 패키지를 사용하고 있습니다. 아래의 절차를 사용하여 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을 생성.

ColumnA의 모든 행을 인쇄 한 후 ColumnB에 일부 레코드를 추가하려고합니다.

ColumnA ColumnB 

Row1  Row1B 

Row2  Row2B 

Row3  Row3B 

저는 PL/SQL에 초보자입니다.

누구든지 문제를 해결할 수 있도록 도와 주시겠습니까?

특정 행을 탐색하고 업데이트하려면 어떻게해야합니까?

답변

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가 서로 다른 시간에 서로 다른 소스에서 채워지는 경우

,하지만 당신은 파일로 엑셀 데이터를 쓰기 전에,이 코드

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; 
+0

친애하는 alexs, 답장을 보내 감사합니다,하지만 우리는 열 B A의 값을 가져올 수 없습니다 : 작동 할 수 있습니다 새로운 행을 추가 할 시간. ColumnA와 ColumB는 특정 조건에 따라 다른 테이블에 있습니다. – Sravan

+0

Sravan, 내 두 번째 솔루션이 도움이 되었습니까? – alexs

+0

체크 아웃이 필요하면 알렉스를 앉혀주세요. :-) 후속 조치에 감사드립니다. – Sravan

관련 문제