在form中将数据打印到EXCEL文件(单元格合并、改变字体大小等操作)

[标题]在form中将数据打印到EXCEL文件的一些其他问题,请高手帮忙解决
[发贴人]lizhiqiang
[分类]FORM分类.输出成EXCEL
--------------------------------------------
看过有关 关于数据打印到EXCEL文件的问题,现在的问题是:当数据输出倒Excel后,怎样根据生成数据的行列数,在Excel内自动画出单元格表格(线),怎样根据数据分组情况,进行单元格合并、改变字体大小等操作(通过程序自动实现!)?请高手帮忙解决?
--------------------------------------------
本文整理并转载自:阿莫OracleDeveloper论坛(http://www.oradev.net)

第二來源http://oracledev.5d6d.com/thread-8835-1-1.html

 

/******************************************************************/
|                     Excel文件排版                                |
/******************************************************************/                   
--EXCEL排版,配置合并单元格        
Procedure SP_ExcelMergeSet(
                                                                                        Sheet                    IN OUT OLE2.obj_type,--工作表对象
                                                                                        P_Row1           IN NUMBER,           --起始单元格行坐标
                                                                                        P_Col1            IN NUMBER,                                         --起始单元格列坐标
                                                                                        P_Row2            IN NUMBER,           --终止单元格行坐标
                                                                                        P_Col2            IN NUMBER,                                         --终止单元格列坐标
                                                                                        P_Type                                 In Number:=1                                 --是否合并,1:合并;0,不合并
                                                                                      )
Is
  CellStart ole2.obj_type; 
        CellEnd ole2.obj_type; 
        Rang ole2.Obj_type; 
        args_End ole2.list_type; 
        args_Rang ole2.list_type; 
        args_Start ole2.list_type; 
Begin
        --设置起始单元格对象 CellStart                        
        args_Start:=ole2.create_arglist; 
        ole2.add_arg(args_Start,P_Row1); 
        ole2.add_arg(args_Start,P_col1); 
        CellStart:=ole2.get_obj_property(sheet,'Cells',args_Start); 
        --设置终止单元格对象 CellEnd                                
        args_End:=ole2.create_arglist; 
        ole2.add_arg(args_End,P_Row2); 
        ole2.add_arg(args_End,P_Col2); 
        CellEnd:=ole2.get_obj_property(sheet,'Cells',args_End); 
        --设置排版单元格对象 Rang
        args_Rang:=ole2.create_arglist; 
        ole2.add_arg(args_Rang,FN_Get26Change(P_Col1)||P_Row1||':'||Fn_Get26Change(P_Col2)||P_Row2); 
  --ole2.add_arg_Obj(args_Rang,CellStart);
  --ole2.add_arg_Obj(args_Rang,CellEnd); 
        Rang:=ole2.get_obj_property(sheet,'Range',args_Rang); 
        --排版-合并单元格
        ole2.Set_property(Rang,'MergeCells',1); --设置合并单元格
        --释放对象
        ole2.destroy_arglist(args_Start);
        ole2.destroy_arglist(args_End);
        ole2.destroy_arglist(args_Rang);
        ole2.release_obj(Rang); 
        ole2.release_obj(CellStart); 
        ole2.release_obj(CellEnd); 
   Null;
end;        

--EXCEL排版,设置分页线        
Procedure SP_ExcelSetPage(
                                                                                 Sheet                        IN OUT OLE2.obj_type,--工作表对象
                                                                                 P_Col            IN NUMBER           --单元格行坐标
                                                                                )
Is
        --定义单元格对象
        Cell ole2.obj_type; 
        args ole2.list_type; 
        args_Page ole2.list_type; 
        --定义分页对象
        PageRow Ole2.Obj_Type;
Begin
        --配置起始单元格行对象                        
        args:=ole2.create_arglist; 
        ole2.add_arg(args,P_Col); 
        PageRow:=ole2.get_obj_property(sheet,'Rows',args);
        --设置分页符
        ole2.Set_Property(PageRow,'PageBreak',-4135); 
        --释放对象
        ole2.destroy_arglist(args);
        ole2.destroy_arglist(args_Page);
        ole2.release_obj(Cell); 
        ole2.release_obj(PageRow); 
End;        

--EXCEL排版,设置行高        
Procedure SP_ExcelSetRowHeight(
                                                                                                        Sheet                         IN OUT OLE2.obj_type,--工作表对象
                                                                                                        P_Row1            IN NUMBER,           --起始单元格行坐标
                                                                                                        P_Row2            IN NUMBER,                                   --终止单元格行坐标
                                                                                                        P_RowHeight             In Number                                                 --行高
                                                                                                                        )
Is
        CellStart ole2.obj_type; 
        args_Start ole2.list_type; 
        CellEnd ole2.obj_type; 
        args_End ole2.list_type; 
        Args_Rang Ole2.List_Type;
        Rang Ole2.Obj_Type;
Begin
        --设置起始单元格对象 CellStart                        
        args_Start:=ole2.create_arglist; 
        ole2.add_arg(args_Start,P_Row1); 
        ole2.add_arg(args_Start,1); 
        CellStart:=ole2.get_obj_property(sheet,'Cells',args_Start); 
        --设置终止单元格对象 CellEnd                                
        args_End:=ole2.create_arglist; 
        ole2.add_arg(args_End,P_Row2); 
        ole2.add_arg(args_End,1); 
        CellEnd:=ole2.get_obj_property(sheet,'Cells',args_End); 
        --设置排版单元格对象 Rang
        args_Rang:=ole2.create_arglist; 
        ole2.add_arg(args_Rang,FN_Get26Change(1)||P_Row1||':'||Fn_Get26Change(1)||P_Row2); 
  --ole2.add_arg_Obj(args_Rang,CellStart); 
        --ole2.add_arg_Obj(args_Rang,CellEnd); 
        Rang:=ole2.get_obj_property(sheet,'Range',args_Rang); 
        --单元格排版
        ole2.Set_property(Rang,'RowHeight',P_RowHeight); --设置行宽
        --释放对象
        ole2.destroy_arglist(args_Start);
        ole2.destroy_arglist(args_End);
        ole2.destroy_arglist(args_Rang);
        ole2.release_obj(CellStart); 
        ole2.release_obj(CellEnd); 
        ole2.release_obj(Rang); 
End;        

--EXCEL排版,设置列宽        
Procedure SP_ExcelSetColumnWeight(
                                                                                                                        Sheet                    IN OUT OLE2.obj_type,--工作表对象
                                                                                                                        P_Col1            IN NUMBER,           --起始单元格列坐标
                                                                                                                        P_Col2            IN NUMBER,                                   --终止单元格列坐标
                                                                                                                        P_ColumnWeight        In Number                                                 --列宽
                                                                                                                                        )
Is
        CellStart ole2.obj_type; 
        args_Start ole2.list_type; 
        CellEnd ole2.obj_type; 
        args_End ole2.list_type; 
        Args_Rang Ole2.List_Type;
        Rang Ole2.Obj_Type;
Begin
        --设置起始单元格对象 CellStart                        
        args_Start:=ole2.create_arglist; 
        ole2.add_arg(args_Start,1); 
        ole2.add_arg(args_Start,P_Col1); 
        CellStart:=ole2.get_obj_property(sheet,'Cells',args_Start); 
        --设置终止单元格对象 CellEnd                                
        args_End:=ole2.create_arglist; 
        ole2.add_arg(args_End,1); 
        ole2.add_arg(args_End,P_Col2); 
        CellEnd:=ole2.get_obj_property(sheet,'Cells',args_End); 
        --设置排版单元格对象 Rang
        args_Rang:=ole2.create_arglist; 
        ole2.add_arg(args_Rang,FN_Get26Change(P_col1)||'1'||':'||Fn_Get26Change(P_Col2)||'1'); 
        Rang:=ole2.get_obj_property(sheet,'Range',args_Rang); 
        --单元格排版
        ole2.Set_property(Rang,'ColumnWidth',P_ColumnWeight); --设置列宽
        --ole2.Set_property(Rang,'VerticalAlignment',3); --设置垂直对象,居中
        --ole2.Set_property(Rang,'HorizontalAlignment',3); --设置水平对齐,居中
        --释放对象
        ole2.destroy_arglist(args_Start);
        ole2.destroy_arglist(args_End);
        ole2.destroy_arglist(args_Rang);
        ole2.release_obj(CellStart); 
        ole2.release_obj(CellEnd); 
        ole2.release_obj(Rang); 
End;        
        
--EXCEL排版,设置对齐方式
Procedure SP_ExcelSetAlign(
                                                                                        Sheet                    IN OUT OLE2.obj_type,--工作表对象
                                                                                        P_Row1           IN NUMBER,           --起始单元格列坐标
                                                                                        P_Col1            IN NUMBER,           --起始单元格行坐标
                                                                                        P_Row2            IN NUMBER,                                   --终止单元格列坐标
                                                                                        P_Col2            IN NUMBER,                                   --终止单元格行坐标
                                                                                        P_VerticalAlign        In Number:=3,                         --垂直方向对齐模式,0:两端对齐;1:向上;2:向下;3:居中
                                                                                        P_HorizontalAlign        In Number:=3                  --水平方向对齐模式,0:两端对齐;1:向左;2:向右;3:居中
                                                                                                        )
Is
        CellStart ole2.obj_type; 
        args_Start ole2.list_type; 
        CellEnd ole2.obj_type; 
        args_End ole2.list_type; 
        Args_Rang Ole2.List_Type;
        Rang Ole2.Obj_Type;
        P_Vertical Number;
        P_Horizontal Number;
Begin
        --设置起始单元格对象 CellStart                        
        args_Start:=ole2.create_arglist; 
        ole2.add_arg(args_Start,P_Row1); 
        ole2.add_arg(args_Start,P_Col1); 
        CellStart:=ole2.get_obj_property(sheet,'Cells',args_Start); 
        --设置终止单元格对象 CellEnd                                
        args_End:=ole2.create_arglist; 
        ole2.add_arg(args_End,P_Row2); 
        ole2.add_arg(args_End,P_Col2); 
        CellEnd:=ole2.get_obj_property(sheet,'Cells',args_End); 
        --设置排版单元格对象 Rang
        args_Rang:=ole2.create_arglist; 
        ole2.add_arg(args_Rang,FN_Get26Change(P_Col1)||P_Row1||':'||Fn_Get26Change(P_Col2)||P_Row2); 
        --ole2.add_arg_Obj(args_Rang,CellStart); 
        --ole2.add_arg_Obj(args_Rang,CellEnd); 
        Rang:=ole2.get_obj_property(sheet,'Range',args_Rang); 
        --单元格排版
        If P_VerticalAlign=0 Then
                P_Vertical:=-4130; --两端对齐
        ElsIf P_VerticalAlign=1 Then
                P_Vertical:=-4160; --向左对齐
        ElsIf P_VerticalAlign=2 Then
                P_Vertical:=-4107; --向右对齐
        ElsIf P_VerticalAlign=3 Then
                P_Vertical:=-4108; --居中对齐
        End If;
        If P_HorizontalAlign=0 Then
                        P_Horizontal:=1; --两端对齐
        ElsIf P_HorizontalAlign=1 then
                        P_Horizontal:=-4131; --向上对齐
        ElsIf P_HorizontalAlign=2 Then
                        P_Horizontal:=-4152; --向下对齐
        ElsIf P_HorizontalAlign=3 Then
                        P_Horizontal:=-4108; --居中对齐
        End If;
        ole2.Set_property(Rang,'VerticalAlignment',P_Vertical); --设置垂直对象,居中
        ole2.Set_property(Rang,'HorizontalAlignment',P_Horizontal); --设置水平对齐,居中
        --释放对象
        ole2.destroy_arglist(args_Start);
        ole2.destroy_arglist(args_End);
        ole2.destroy_arglist(args_Rang);
        ole2.release_obj(CellStart); 
        ole2.release_obj(CellEnd); 
        ole2.release_obj(Rang); 
End;        
        
--EXCEL排版,设置自动换行
Procedure SP_AutoNewLine(
                                                                                Sheet                    IN OUT OLE2.obj_type,--工作表对象
                                                                                P_Row1            IN NUMBER,           --起始单元格列坐标
                                                                                P_Col1            IN NUMBER,           --起始单元格行坐标
                                                                                P_Row2            IN NUMBER,                                   --终止单元格列坐标
                                                                                P_Col2            IN NUMBER,                                   --终止单元格行坐标
                                                                                P_Type        In Number:=0                         --是否自动换行,1:自动换行,0:不自动换行
                                                                                                        )
Is
        CellStart ole2.obj_type; 
        args_Start ole2.list_type; 
        CellEnd ole2.obj_type; 
        args_End ole2.list_type; 
        Args_Rang Ole2.List_Type;
        Rang Ole2.Obj_Type;
Begin
        --设置起始单元格对象 CellStart                        
        args_Start:=ole2.create_arglist; 
        ole2.add_arg(args_Start,P_Row1); 
        ole2.add_arg(args_Start,P_Col1); 
        CellStart:=ole2.get_obj_property(sheet,'Cells',args_Start); 
        --设置终止单元格对象 CellEnd                                
        args_End:=ole2.create_arglist; 
        ole2.add_arg(args_End,P_Row2); 
        ole2.add_arg(args_End,P_Col2); 
        CellEnd:=ole2.get_obj_property(sheet,'Cells',args_End); 
        --设置排版单元格对象 Rang
        args_Rang:=ole2.create_arglist; 
        ole2.add_arg(args_Rang,FN_Get26Change(P_Col1)||P_Row1||':'||Fn_Get26Change(P_Col2)||P_Row2); 
  --ole2.add_arg_Obj(args_Rang,CellStart); 
  --ole2.add_arg_Obj(args_Rang,CellEnd); 
        Rang:=ole2.get_obj_property(sheet,'Range',args_Rang); 
        ole2.Set_property(Rang,'WrapText',P_Type); --设置自动换行
        --释放对象
        ole2.destroy_arglist(args_Start);
        ole2.destroy_arglist(args_End);
        ole2.destroy_arglist(args_Rang);
        ole2.release_obj(CellStart); 
        ole2.release_obj(CellEnd); 
        ole2.release_obj(Rang); 
End;        

--EXCEL排版,配置边框线      
Procedure SP_ExcelBorderSet_Old(
                                                        Sheet         IN OUT OLE2.obj_type, --工作表对象
                                                        P_Row1      IN NUMBER,                   --起始单元格行坐标
                                                        P_Col1        IN NUMBER,                   --起始单元格列坐标
                                                        P_Row2      IN NUMBER,                    --终止单元格行坐标
                                                        P_Col2        IN NUMBER,                    --终止单元格列坐标
                                                        P_Type        In Number:=1                --设置是否加边框,1:加边框;0:不加边框
                                                         )
Is
        --定义单元格对象
        CellStart ole2.obj_type; 
        args_Start ole2.list_type; 
        CellEnd ole2.obj_type; 
        args_End ole2.list_type; 
        args_Rang ole2.list_type; 
        Rang ole2.Obj_type; 
        --定义边框对象
        Args_Border_AllOut Ole2.List_Type; --5
        Args_Border_AllIn Ole2.List_Type; --6
        Args_Border_OutLeft Ole2.List_Type; --7
        Args_Border_OutTop Ole2.List_Type; --8
        Args_Border_OutBottom Ole2.List_Type; --9
        Args_Border_OutRight Ole2.List_Type; --10
        Args_Border_InVertical Ole2.List_Type; --11
        Args_Border_InHorizontal Ole2.List_Type; --12
                border_AllIn ole2.obj_type;
                border_AllOut ole2.obj_type;
                border_OutLeft ole2.obj_type;
                border_OutTop ole2.obj_type;
                border_OutBottom ole2.obj_type;
                border_OutRight ole2.obj_type;
                border_InVertical ole2.obj_type;
                border_InHorizontal ole2.obj_type;
Begin
        --配置起始单元格对象 CellStart                        
        args_Start:=ole2.create_arglist; 
        ole2.add_arg(args_Start,P_Row1); 
        ole2.add_arg(args_Start,P_Col1); 
        CellStart:=ole2.get_obj_property(sheet,'Cells',args_Start); 
        --配置终止单元格对象 CellEnd                                
        args_End:=ole2.create_arglist; 
        ole2.add_arg(args_End,P_Row2); 
        ole2.add_arg(args_End,P_Col2); 
        CellEnd:=ole2.get_obj_property(sheet,'Cells',args_End); 
        --配置排版单元格对象 Rang
        args_Rang:=ole2.create_arglist; 
        ole2.add_arg(args_Rang,FN_Get26Change(P_Col1)||P_Row1||':'||Fn_Get26Change(P_Col2)||P_Row2); 
        --ole2.add_arg_Obj(args_Rang,CellStart); 
        --ole2.add_arg_Obj(args_Rang,CellEnd); 
        Rang:=ole2.get_obj_property(sheet,'Range',args_Rang); 
        --配置边框线对象 BORDERline
        Args_Border_AllOut:=Ole2.Create_ArgList; --所有外框,用于初始化
        Ole2.Add_Arg(Args_Border_AllOut,5);
        Args_Border_AllIn :=Ole2.Create_ArgList;--所有内框,用于初始化
        Ole2.Add_Arg(Args_Border_AllIn,6);
        Args_Border_OutLeft:=Ole2.Create_ArgList;--外框左边
        Ole2.Add_Arg(Args_Border_OutLeft,7);
  Args_Border_OutTop:=Ole2.Create_ArgList;--外框上边
        Ole2.Add_Arg(Args_Border_OutTop,8);
        Args_Border_OutBottom:=Ole2.Create_ArgList;--外框下边
        Ole2.Add_Arg(Args_Border_OutBottom,9);
        Args_Border_OutRight:=Ole2.Create_ArgList;--外框右边
        Ole2.Add_Arg(Args_Border_OutRight,10);
        Args_Border_InVertical:=Ole2.Create_ArgList;--内框垂直
        Ole2.Add_Arg(Args_Border_InVertical,11);
        Args_Border_InHorizontal:=Ole2.Create_ArgList;--内框水平垂直
        Ole2.Add_Arg(Args_Border_InHorizontal,12);
        Border_AllOut:=ole2.Get_Obj_Property(Rang,'Borders',Args_Border_AllOut);
        Border_AllIn:=ole2.Get_Obj_Property(Rang,'Borders',Args_Border_AllIn);
        Border_OutLeft:=ole2.Get_Obj_Property(Rang,'Borders',Args_Border_OutLeft);
        Border_OutTop:=ole2.Get_Obj_Property(Rang,'Borders',Args_Border_OutTop);
        Border_OutBottom:=ole2.Get_Obj_Property(Rang,'Borders',Args_Border_OutBottom);
        Border_OutRight:=ole2.Get_Obj_Property(Rang,'Borders',Args_Border_OutRight);
        Border_InVertical:=ole2.Get_Obj_Property(Rang,'Borders',Args_Border_InVertical);
        Border_InHorizontal:=ole2.Get_Obj_Property(Rang,'Borders',Args_Border_InHorizontal);
        --设置边框线
        --初始化边框线
        ole2.Set_property(Border_AllIn,'LineStyle',0); --初始化所有内边框线
        ole2.Set_property(Border_AllOut,'LineStyle',0); --初始化所有外边框线
        If P_Type=1 Then
                --设置外框
                ole2.Set_property(Border_OutLeft,'LineStyle',1); --设置外边框左边
                ole2.Set_property(Border_OutRight,'LineStyle',1); --设置外边框右边
                ole2.Set_property(Border_OutTop,'LineStyle',1); --设置外边框上边
                ole2.Set_property(Border_OutBottom,'LineStyle',1); --设置外边框下边
                --设置内框
                If Not P_Col1=P_Col2 Then --垂直单元格不相同,才需要设置内框垂直边框线
                        ole2.Set_property(Border_InVertical,'LineStyle',1); --设置内框垂直边框线
                End If;
                If Not P_Row1=P_Row2 Then --水平单元格不相同,才需要设置内框水平边框线
                        ole2.Set_property(Border_InHorizontal,'LineStyle',1); --设置内框水平边框线
                End If;
        End If;
        --释放对象
        ole2.destroy_arglist(args_Start);
        ole2.destroy_arglist(args_End);
        ole2.destroy_arglist(args_Rang);
        ole2.release_obj(CellStart); 
        ole2.release_obj(CellEnd); 
        ole2.release_obj(Rang); 
        --定义边框对象
        ole2.destroy_arglist(Args_Border_AllOut);
        ole2.destroy_arglist(Args_Border_AllIn);
        ole2.destroy_arglist(Args_Border_OutLeft);
        ole2.destroy_arglist(Args_Border_OutTop);
        ole2.destroy_arglist(Args_Border_OutBottom);
        ole2.destroy_arglist(Args_Border_OutRight);
        ole2.destroy_arglist(Args_Border_InVertical);
        ole2.destroy_arglist(Args_Border_InHorizontal);
                ole2.release_obj(border_AllIn);
                ole2.release_obj(border_AllOut);
                ole2.release_obj(border_OutLeft);
                ole2.release_obj(border_OutTop);
                ole2.release_obj(border_OutBottom);
                ole2.release_obj(border_OutRight);
                ole2.release_obj(border_InVertical);
                ole2.release_obj(border_InHorizontal);
end;

 

 

--EXCEL排版,配置边框线(边框线可控制)      
Procedure SP_ExcelBorderSet( Sheet            IN OUT OLE2.obj_type,--工作表对象     

                                                 P_Row1         IN NUMBER,           --起始单元格行坐标                                                                                                            P_Col1           IN NUMBER,         --起始单元格列坐标                                                                                                              P_Row2          IN NUMBER,           --终止单元格行坐标                                               

                                                 P_Col2            IN NUMBER,         --终止单元格列坐标

                                                 P_OutType      In Number:=1,    --设置外部边框是否加边框线,1:加边框;0:不加边框                                                            P_VerticalType In Number:=0,    --设置内部纵向是否加边框线,1:加边框;0:不加边框                                                            P_HorizontalType In Number:=0  --设置内部横向是否加边框线,1:加边框;0:不加边框                                                         )
Is
        --定义单元格对象
        CellStart ole2.obj_type; 
        args_Start ole2.list_type; 
        CellEnd ole2.obj_type; 
        args_End ole2.list_type; 
        args_Rang ole2.list_type; 
        Rang ole2.Obj_type; 
        --定义边框对象
        Args_Border_AllOut Ole2.List_Type; --5
        Args_Border_AllIn Ole2.List_Type; --6
        Args_Border_OutLeft Ole2.List_Type; --7
        Args_Border_OutTop Ole2.List_Type; --8
        Args_Border_OutBottom Ole2.List_Type; --9
        Args_Border_OutRight Ole2.List_Type; --10
        Args_Border_InVertical Ole2.List_Type; --11
        Args_Border_InHorizontal Ole2.List_Type; --12
                border_AllIn ole2.obj_type;
                border_AllOut ole2.obj_type;
                border_OutLeft ole2.obj_type;
                border_OutTop ole2.obj_type;
                border_OutBottom ole2.obj_type;
                border_OutRight ole2.obj_type;
                border_InVertical ole2.obj_type;
                border_InHorizontal ole2.obj_type;
Begin
        --配置起始单元格对象 CellStart                        
        args_Start:=ole2.create_arglist; 
        ole2.add_arg(args_Start,P_Row1); 
        ole2.add_arg(args_Start,P_Col1); 
        CellStart:=ole2.get_obj_property(sheet,'Cells',args_Start); 
        --配置终止单元格对象 CellEnd                                
        args_End:=ole2.create_arglist; 
        ole2.add_arg(args_End,P_Row2); 
        ole2.add_arg(args_End,P_Col2); 
        CellEnd:=ole2.get_obj_property(sheet,'Cells',args_End); 
        --配置排版单元格对象 Rang
        args_Rang:=ole2.create_arglist; 
        ole2.add_arg(args_Rang,FN_Get26Change(P_Col1)||P_Row1||':'||Fn_Get26Change(P_Col2)||P_Row2); 
        --ole2.add_arg_Obj(args_Rang,CellStart); 
        --ole2.add_arg_Obj(args_Rang,CellEnd); 
        Rang:=ole2.get_obj_property(sheet,'Range',args_Rang); 
        --配置边框线对象 BORDERline
        Args_Border_AllOut:=Ole2.Create_ArgList; --所有外框,用于初始化
        Ole2.Add_Arg(Args_Border_AllOut,5);
        Args_Border_AllIn :=Ole2.Create_ArgList;--所有内框,用于初始化
        Ole2.Add_Arg(Args_Border_AllIn,6);
        Args_Border_OutLeft:=Ole2.Create_ArgList;--外框左边
        Ole2.Add_Arg(Args_Border_OutLeft,7);
        Args_Border_OutTop:=Ole2.Create_ArgList;--外框上边
        Ole2.Add_Arg(Args_Border_OutTop,8);
        Args_Border_OutBottom:=Ole2.Create_ArgList;--外框下边
        Ole2.Add_Arg(Args_Border_OutBottom,9);
        Args_Border_OutRight:=Ole2.Create_ArgList;--外框右边
        Ole2.Add_Arg(Args_Border_OutRight,10);
        Args_Border_InVertical:=Ole2.Create_ArgList;--内框垂直
        Ole2.Add_Arg(Args_Border_InVertical,11);
        Args_Border_InHorizontal:=Ole2.Create_ArgList;--内框水平垂直
        Ole2.Add_Arg(Args_Border_InHorizontal,12);
        Border_AllOut:=ole2.Get_Obj_Property(Rang,'Borders',Args_Border_AllOut);
        Border_AllIn:=ole2.Get_Obj_Property(Rang,'Borders',Args_Border_AllIn);
        Border_OutLeft:=ole2.Get_Obj_Property(Rang,'Borders',Args_Border_OutLeft);
        Border_OutTop:=ole2.Get_Obj_Property(Rang,'Borders',Args_Border_OutTop);
        Border_OutBottom:=ole2.Get_Obj_Property(Rang,'Borders',Args_Border_OutBottom);
        Border_OutRight:=ole2.Get_Obj_Property(Rang,'Borders',Args_Border_OutRight);
        Border_InVertical:=ole2.Get_Obj_Property(Rang,'Borders',Args_Border_InVertical);
        Border_InHorizontal:=ole2.Get_Obj_Property(Rang,'Borders',Args_Border_InHorizontal);
        --设置边框线
        --初始化边框线
        ole2.Set_property(Border_AllIn,'LineStyle',0); --初始化所有内边框线
        ole2.Set_property(Border_AllOut,'LineStyle',0); --初始化所有外边框线
        If P_OutType=1 Then
                --设置外框
                ole2.Set_property(Border_OutLeft,'LineStyle',1); --设置外边框左边
                ole2.Set_property(Border_OutRight,'LineStyle',1); --设置外边框右边
                ole2.Set_property(Border_OutTop,'LineStyle',1); --设置外边框上边
                ole2.Set_property(Border_OutBottom,'LineStyle',1); --设置外边框下边
        End If;
        If P_VerticalType=1 Then
                --设置内框纵向
                If Not P_Col1=P_Col2 Then --垂直单元格不相同,才需要设置内框垂直边框线
                        ole2.Set_property(Border_InVertical,'LineStyle',1); --设置内框垂直边框线
                End If;
        End If;
        If P_HorizontalType=1 Then
                If Not P_Row1=P_Row2 Then --水平单元格不相同,才需要设置内框水平边框线
                        ole2.Set_property(Border_InHorizontal,'LineStyle',1); --设置内框水平边框线
                End If;
        End If;
        --释放对象
        ole2.destroy_arglist(args_Start);
        ole2.destroy_arglist(args_End);
        ole2.destroy_arglist(args_Rang);
        ole2.release_obj(CellStart); 
        ole2.release_obj(CellEnd); 
        ole2.release_obj(Rang); 
        --定义边
        ole2.destroy_arglist(Args_Border_AllIn);
        ole2.destroy_arglist(Args_Border_OutLeft);
        ole2.destroy_arglist(Args_Border_OutTop);
        ole2.destroy_arglist(Args_Border_OutBottom);
        ole2.destroy_arglist(Args_Border_OutRight);
        ole2.destroy_arglist(Args_Border_InVertical);
        ole2.destroy_arglist(Args_Border_InHorizontal);
                ole2.release_obj(border_AllIn);
                ole2.release_obj(border_AllOut);
                ole2.release_obj(border_OutLeft);
                ole2.release_obj(border_OutTop);
                ole2.release_obj(border_OutBottom);
                ole2.release_obj(border_OutRight);
                ole2.release_obj(border_InVertical);
                ole2.release_obj(border_InHorizontal);
end;

 

--EXCEL排版,配置单元格数值类型      
Procedure SP_ExcelCellType(Sheet             IN OUT OLE2.obj_type,--工作表对象
                                             P_Row1          IN NUMBER,           --起始单元格行坐标
                                             P_Col1            IN NUMBER,            --起始单元格列坐标
                                             P_Row2          IN NUMBER,           --终止单元格行坐标
                                             P_Col2            IN NUMBER,            --终止单元格列坐标
                                             P_Type           In Varchar2:='Char'

--设置是否加边框,'char'字符型,'date'日期型,'number999'999数值型,'Number.99' 999.99数值型,'Number9,999.99' 9,999.99数值型
                                              )
Is
        CellStart ole2.obj_type; 
        args_Start ole2.list_type; 
        CellEnd ole2.obj_type; 
        args_End ole2.list_type; 
        Args_Rang Ole2.List_Type;
        Rang Ole2.Obj_Type;
Begin
        --设置起始单元格对象 CellStart                        
        args_Start:=ole2.create_arglist; 
        ole2.add_arg(args_Start,P_Row1); 
        ole2.add_arg(args_Start,P_Col1); 
        CellStart:=ole2.get_obj_property(sheet,'Cells',args_Start); 
        --设置终止单元格对象 CellEnd                                
        args_End:=ole2.create_arglist; 
        ole2.add_arg(args_End,P_Row2); 
        ole2.add_arg(args_End,P_Col2); 
        CellEnd:=ole2.get_obj_property(sheet,'Cells',args_End); 
        --设置排版单元格对象 Rang
        args_Rang:=ole2.create_arglist; 
        ole2.add_arg(args_Rang,FN_Get26Change(P_Col1)||P_Row1||':'||Fn_Get26Change(P_Col2)||P_Row2); 
        --ole2.add_arg_Obj(args_Rang,CellStart); 
        --ole2.add_arg_Obj(args_Rang,CellEnd); 
        Rang:=ole2.get_obj_property(sheet,'Range',args_Rang); 
        --设置单元格类型
        if Upper(P_Type)='CHAR' Then
                ole2.Set_property(Rang,'NumberFormatLocal','@'); --设置单元格类型(通用型)
        ElsIf Upper(P_Type)='DATE' Then
                ole2.Set_property(Rang,'NumberFormatLocal','yyyy.mm.dd'); --设置单元格类型(日期型)
        ElsIf Upper(P_Type)='NUMBER999' Then
                ole2.Set_property(Rang,'NumberFormatLocal','0_ '); --设置单元格类型(数值型999)
        ElsIf Upper(P_Type)='NUMBER999.99' Then
                ole2.Set_property(Rang,'NumberFormatLocal','0.00_ '); --设置单元格类型(数值型999.99)
        ElsIf Upper(P_Type)='NUMBER9,999.99' Then
                ole2.Set_property(Rang,'NumberFormatLocal','#,##0.00'); --设置单元格类型(数值型999,999.99)
        End If;
        --释放对象
        ole2.destroy_arglist(args_Start);
        ole2.destroy_arglist(args_End);
        ole2.destroy_arglist(args_Rang);
        ole2.release_obj(CellStart); 
        ole2.release_obj(CellEnd); 
        ole2.release_obj(Rang); 
End;        
       
--EXCEL排版,打印设置     
Procedure SP_ExcelPrintSet(Sheet                  IN OUT OLE2.obj_type,       --工作表对象
                                             P_PrintTitleRows In VarChar2:='$1/:$1',        --每页标题行
                                             P_RightFooter      In VarChar2:='&/;P/&N' ,   --页脚(打印页数/总页数)
                                             P_RightHeader     In VarChar2:='&D  &T',       --设置页眉打印日期和时间
                                             P_LeftMargin        In Number:=12,                  --设置左边距
                                             P_RightMargin      In Number:=12,                  --设置右边距
                                             P_TopMargin        In Number:=20,                 --设置上边距
                                             P_BottomMargin   In Number:=20,                 --设置下边距
                                             P_HeaderMargin   In Number:=12,                 --设置页眉边距
                                             P_FooterMargin     In Number:=12,                 --设置页脚边距
                                             P_CenterHorizontally   In Number:=1,            --设置水平居中,1:水平居中,0:不水平居中
                                             P_CenterVertically        In Number:=1,           --设置垂直居中,1:垂直居中,0:水垂直居中
                                             P_Orientation               In Number:=1,           --设置打印方向,1:纵向打印,2:横向打印
                                             P_Zoom                    In Number:=100            --设置打印比例
                                              )
Is
                PrintSet ole2.obj_type;
Begin
        --设置打印设置对象 PrintSet
        PrintSet:=ole2.get_obj_property(Sheet,'PageSetup'); 
        --打印设置
        ole2.Set_property(PrintSet,'PrintTitleRows',P_PrintTitleRows); --设置每页必须打印的行
        ole2.Set_property(PrintSet,'RightFooter',P_RightFooter); --设置页脚打印页数/总页数
        ole2.Set_property(PrintSet,'RightHeader',P_RightHeader); --设置页眉打印日期和时间
        ole2.Set_property(PrintSet,'LeftMargin',P_LeftMargin); --设置左边距
        ole2.Set_property(PrintSet,'RightMargin',P_RightMargin); --设置右边距
        ole2.Set_property(PrintSet,'TopMargin',P_TopMargin); --设置上边距
        ole2.Set_property(PrintSet,'BottomMargin',P_BottomMargin); --设置下边距
        ole2.Set_property(PrintSet,'HeaderMargin',P_HeaderMargin); --设置页眉边距
        ole2.Set_property(PrintSet,'FooterMargin',P_FooterMargin); --设置页脚边距
        ole2.Set_property(PrintSet,'CenterHorizontally',P_CenterHorizontally); --设置水平居中
        ole2.Set_property(PrintSet,'CenterVertically',P_CenterVertically); --设置垂直居中
        ole2.Set_property(PrintSet,'Orientation',P_Orientation); --设置打印方向
        ole2.Set_property(PrintSet,'Zoom',P_Zoom); --设置打印比例
        --释放对象
        ole2.release_obj(PrintSet); 
end;       

--EXCEL排版,字体设置   
Procedure SP_ExcelFontSet(Sheet          IN OUT OLE2.obj_type, --工作表对象
                                             P_Row1      IN NUMBER,                   --起始单元格行坐标
                                             P_Col1        IN NUMBER,                  --起始单元格列坐标
                                             P_Row2      IN NUMBER,                   --终止单元格行坐标
                                             P_Col2        IN NUMBER,                   --终止单元格列坐标
                                             P_FontName  In VarChar2 :='宋体',  --字体名称
                                             P_FontSize         In Number :=12,     --字体大小
                                             P_FontBold         In Number :=0,       --是否粗体,1:粗体;0:不粗体
                                             P_FontItalic        In Number :=0         --是否斜体,1:斜体;0:不斜体
                                                                                                )
Is
        CellStart ole2.obj_type; 
        args_Start ole2.list_type; 
        CellEnd ole2.obj_type; 
        args_End ole2.list_type; 
        args_Rang ole2.list_type; 
        Rang ole2.list_type; 
        Font Ole2.List_Type;
Begin
        --设置起始单元格对象 CellStart                        
        args_Start:=ole2.create_arglist; 
        ole2.add_arg(args_Start,P_Row1); 
        ole2.add_arg(args_Start,P_Col2); 
        CellStart:=ole2.get_obj_property(sheet,'Cells',args_Start); 
        --设置终止单元格对象 CellEnd                                
        args_End:=ole2.create_arglist; 
        ole2.add_arg(args_End,P_Row2); 
        ole2.add_arg(args_End,P_Col2); 
        CellEnd:=ole2.get_obj_property(sheet,'Cells',args_End); 
        --设置排版单元格对象 Rang
        args_Rang:=ole2.create_arglist; 
        ole2.add_arg(args_Rang,FN_Get26Change(P_Col1)||P_Row1||':'||Fn_Get26Change(P_Col2)||P_Row2); 
        --ole2.add_arg_Obj(args_Rang,CellStart); 
        --ole2.add_arg_Obj(args_Rang,CellEnd); 
        Rang:=ole2.get_obj_property(sheet,'Range',args_Rang); 
        --设置字体对象 FONT
        Font:=ole2.get_obj_property(Rang,'font'); 
        --设置字体
        ole2.Set_property(font,'size',P_FontSize); --设置字体大小
        ole2.Set_property(font,'Name',P_FontName); --设置字体名称
        ole2.Set_property(font,'Bold',P_FontBold); --设置字体粗体
        ole2.Set_property(font,'Italic',P_FontItalic); --设置字体斜体
        --释放对象
        ole2.destroy_arglist(args_Start);
        ole2.destroy_arglist(args_End);
        ole2.destroy_arglist(args_Rang);
        ole2.release_obj(Font); 
        ole2.release_obj(Rang); 
        ole2.release_obj(CellStart); 
        ole2.release_obj(CellEnd); 
end;

 

/******************************************************************/
|                     保存Excel文件                                |
/******************************************************************/                   
Procedure SP_SaveExcelFile( Appli        IN OUT OLE2.obj_type,
                                              Book        IN OUT OLE2.obj_type,
                                              Sheet       IN OUT OLE2.obj_type,
                                              FileName  IN VARCHAR2
                                                                                       )
IS
        args      ole2.list_type; 
BEGIN
                --保存文件
                args := ole2.create_arglist;
                ole2.add_arg(args, FileName);
                ole2.invoke(book, 'Save', args);
                ole2.destroy_arglist(args);
END; 


/******************************************************************/
|                  写入数据至Excel文件                             |
/******************************************************************/     
PROCEDURE SP_WriteExcelFile( Sheet                    IN OUT OLE2.obj_type,
                                                   Val          IN VARCHAR2,
                                                    X            IN NUMBER,
                                                    Y            IN NUMBER
                                                    )
IS
                Cell         ole2.obj_type;
                args         ole2.list_type;                 
BEGIN
                --设置单元格                                                         
                args:=ole2.create_arglist; 
                ole2.add_arg(args,X); 
                ole2.add_arg(args,Y); 
                cell:=ole2.get_obj_property(sheet,'cells',args); 
                ole2.destroy_arglist(args);
                ole2.Set_property(cell,'value',Val); 
                ole2.release_obj(cell); 
END;

PROCEDURE SP_SumCells(    --列求和 
                                           Sheet          IN OUT OLE2.obj_type,
                                            X                IN NUMBER,
                                            Y                IN NUMBER,
                                            P_Row1     IN NUMBER,                    --起始单元格行坐标
                                            P_Row2     IN NUMBER                     --终止单元格行坐标                               
                                             )  
IS
                Cell         ole2.obj_type;
                args         ole2.list_type;                 
BEGIN
                --设置单元格                                                         
                args:=ole2.create_arglist; 
                ole2.add_arg(args,X); 
                ole2.add_arg(args,Y); 
                cell:=ole2.get_obj_property(sheet,'cells',args); 
                ole2.destroy_arglist(args);
                ole2.Set_property(cell,'value','=SUM('||FN_Get26Change(Y)||P_Row1||':'||FN_Get26Change(Y)||P_Row2||')'); 
                ole2.release_obj(cell); 
END;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Avue 中将后端传输到的数据展示在页面上的方法,主要有两种: 1. 手动渲染表单数据 在 Avue 中,可以通过在 `mounted` 钩子中手动将后端传输的数据渲染到表单中。具体操作步骤如下: 首先,定义表单的配置信息和初始化数据: ``` data () { return { formConfig: { formItems: [ { type: 'input', label: '姓名', prop: 'name' }, { type: 'radio', label: '性别', prop: 'gender', options: [ {label: '男', value: 'male'}, {label: '女', value: 'female'} ] }, { type: 'select', label: '城市', prop: 'city', options: [ {label: '北京', value: 'beijing'}, {label: '上海', value: 'shanghai'}, {label: '广州', value: 'guangzhou'} ] } ], formData: { name: '', gender: '', city: '' } } } } ``` 然后,在 `mounted` 钩子中获取后端传输的数据,并将其赋值给 formData: ``` mounted () { // 获取后端传输的数据 fetch('api/user') .then(res => res.json()) .then(data => { // 将数据赋值给 formData this.formConfig.formData = data }) } ``` 这样,当组件加载完成后,表单就会自动将后端传输的数据渲染到表单中。 2. 使用 Avue 的 `form-create` 插件 Avue 还提供了一个 `form-create` 插件,可以帮助我们更方便地将后端传输的数据渲染到表单中。使用该插件的步骤如下: 首先,安装 `form-create` 插件: ``` npm install form-create --save ``` 然后,在组件中引入并注册该插件: ``` <template> <fc :f="form" :v="formData"></fc> </template> <script> import formCreate from 'form-create' export default { data () { return { form: { name: { type: 'input', title: '姓名', value: '' }, gender: { type: 'radio', title: '性别', value: '', options: [ {label: '男', value: 'male'}, {label: '女', value: 'female'} ] }, city: { type: 'select', title: '城市', value: '', options: [ {label: '北京', value: 'beijing'}, {label: '上海', value: 'shanghai'}, {label: '广州', value: 'guangzhou'} ] } }, formData: { name: '', gender: '', city: '' } } }, mounted () { // 获取后端传输的数据 fetch('api/user') .then(res => res.json()) .then(data => { // 将数据赋值给 formData this.formData = data }) }, created () { // 注册 form-create 插件 formCreate.init(this) } } </script> ``` 在上面的代码中,我们定义了一个表单配置信息 `form`,并通过 `mounted` 钩子获取后端传输的数据,将其赋值给 `formData`。然后,在 `created` 钩子中注册 `form-create` 插件。 通过以上步骤,我们就可以在 Avue 中将后端传输的数据渲染到表单中了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值