通过表单6i将excel表加载到oracle db中

时间:2014-08-17 02:37:00

标签: oracle plsql oracleforms

我有一个链接,其中包含此代码,可通过oracle表单将Excel数据加载到db表,

DECLARE   
 application OLE2.OBJ_TYPE;   
 workbooks OLE2.OBJ_TYPE;   
 workbook OLE2.OBJ_TYPE;   
 worksheets OLE2.OBJ_TYPE;   
 worksheet OLE2.OBJ_TYPE;   
 cell OLE2.OBJ_TYPE;   
 args OLE2.OBJ_TYPE;   
 ctr NUMBER(12);   
 cols NUMBER(2);  
 name_var1 VARCHAR2(2000);   
 name_var2 VARCHAR2(2000);   
 name_var3 VARCHAR2(2000);   
 name_var4 VARCHAR2(2000);   
 filename varchar2(100);  

 PROCEDURE OLEARG IS  
 args OLE2.OBJ_TYPE;   
 BEGIN  
 args := OLE2.CREATE_ARGLIST;   
 ole2.add_arg(args,ctr); -- row value  
 ole2.add_arg(args,cols); -- column value  
 cell := ole2.GET_OBJ_PROPERTY(worksheet,'Cells',args); -- initializing cell  
 ole2.destroy_arglist(args);   
 END;  

 BEGIN  
 filename :=GET_FILE_NAME('c:\', File_Filter=>'Excel Files (*.xls)|*.xls|'); -- to pick the file  
 application := OLE2.CREATE_OBJ('Excel.Application');   
 ole2.set_property(application,'Visible','true');   
 workbooks := OLE2.GET_OBJ_PROPERTY(application, 'Workbooks');   
 args := OLE2.CREATE_ARGLIST;   
 ole2.add_arg(args,filename); --'c:\13s002.xls'); -- file path and name  
 workbook := ole2.GET_OBJ_PROPERTY(workbooks,'Open',args);   
 ole2.destroy_arglist(args);   
 args := OLE2.CREATE_ARGLIST;   
 ole2.add_arg(args,'Sheet1');   
 worksheet := ole2.GET_OBJ_PROPERTY(workbook,'Worksheets',args);   
 ole2.destroy_arglist(args);   

 ctr := 2; --row number  
 cols := 1; -- column number  

 FIRST_RECORD;   

 LOOP   
 OLEARG;  
 name_var1 := ole2.get_char_property(cell,'Value'); --cell value of the argument  
 cols := cols+1;  

 OLEARG;  
 name_var2 := ole2.get_char_property(cell,'Value'); --cell value of the argument  
 cols := cols+1;  

 OLEARG;  
 name_var3 := ole2.get_char_property(cell,'Value'); --cell value of the argument  
 cols := cols+1;  

 OLEARG;  
 name_var4 := ole2.get_num_property(cell,'Value'); --cell number value of the argument  

 IF ctr = 1 then   
 :tf1 := name_var1;   
 :tf2 := name_var2;   
 :tf3 := name_var3;   
 :tf4 := name_var4;   
 ELSE   
 NEXT_RECORD;   
 :tf1 := name_var1;   
 :tf2 := name_var2;   
 :tf3 := name_var3;   
 :tf4 := name_var4;  
 END IF;   

 EXIT WHEN length(name_var1) = 0 or length(name_var1) is null;   
 ctr := ctr + 1;   
 cols := 1;  

 END LOOP;   
 OLE2.INVOKE(application,'Quit');   
 OLE2.RELEASE_OBJ(cell);   
 OLE2.RELEASE_OBJ(worksheet);   
 OLE2.RELEASE_OBJ(worksheets);   
 OLE2.RELEASE_OBJ(workbook);   
 OLE2.RELEASE_OBJ(workbooks);   
 OLE2.RELEASE_OBJ(application);   
 END;   

我有oracle表格6i 问题是有些参数我应该用值替换,我不知道应该用值替换哪些参数?你能告诉我吗?

- 我创建了4个文本项(:tf1,:tf2,:tf3,:tf4)。 - 我有一个名为"员工"的.xls文件在分区" d:\" 。 - 这些行

name_var1 := ole2.get_char_property(cell,'Value'); --cell value of the argument 
cols := cols+1;
OLEARG;
name_var2 := ole2.get_char_property(cell,'Value'); --cell value of the argument 
cols := cols+1;
OLEARG;
name_var3 := ole2.get_char_property(cell,'Value'); --cell value of the argument 
cols := cols+1;
OLEARG;
name_var4 := ole2.get_num_property(cell,'Value'); --cell number value of the argument  , 

我认为"价值"争论应该用某些东西取代,但我不是什么呢? "参数的单元格值是什么意思"和

"参数"

的单元格编号值

1 个答案:

答案 0 :(得分:0)

您将不得不找到有关此课程的更多信息。看起来'Value'是您想要从单元格返回的数据:值或公式。 OLEARG;是一个内联过程,必须是开始块中的最后一个定义。 cols用于遍历每个列,ctr用于遍历xls文件的行。 OLEARG;期望这些变量名存在于您的代码中。如果您有更多列,则需要为每个附加列提供一组这三个语句

OLEARG; name_var3 := ole2.get_char_property(cell,'Value'); cols := cols+1;

您确实意识到在迁移到6i以上的其他版本的表单时,您必须删除所有这些代码吗?