如何使用 Oracle Forms 获取 Excel 文件的最后一行
Posted
技术标签:
【中文标题】如何使用 Oracle Forms 获取 Excel 文件的最后一行【英文标题】:How to get the last row of Excel file using Oracle Forms 【发布时间】:2018-06-11 11:38:21 【问题描述】:我正在使用 Oracle Forms 将数据从 Excel 导入数据库表。这是我正在使用的代码:
ligne_fin := 300;
FOR Z in 2..ligne_fin LOOP
ligne:=Z;
v_societe := Excel.get(1,Z,1) ;
v_compte := Excel.get(1,Z,2);
v_Tiers := Excel.get(1,Z,3);
v_section := Excel.get(1,Z,4);
insert into EntrCl (SOCIETE,
COMPTE,
TIERS,
SECTION)
VALUES (v_societe,
v_compte,
v_Tiers,
v_section);
END LOOP
用我的get函数
function GET(FOLIO in NUMBER, prow in number,pcol in number)
RETURN varchar2
is
deger varchar2(800);
Begin
deger:='';
args := OLE2.create_arglist;
OLE2.add_arg (args, FOLIO);
Worksheet:=OLE2.GET_OBJ_PROPERTY(workbook,'Worksheets',args);
args:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, prow);
OLE2.ADD_ARG(args, pcol);
cell:=ole2.get_obj_property(worksheet, 'Cells', args);
deger := OLE2.Get_Char_Property(cell, 'Text');
OLE2.RELEASE_OBJ(cell);
OLE2.destroy_arglist (args);
return(deger);
end;
我的问题是我想使用代码自动获取我的 ligne_fin。我不想硬编码。
有什么方法可以使用PL/SQL获取Excel文件的最后一条记录?
【问题讨论】:
一种解决方法,但是如果您使用 excel 公式/vba 将 last_row 范围存储在某个单独的单元格中,然后简单地为您的 sql 获取数据(使用 get 方法)呢? 我认为使用 Forms OLE2 来做你所做的事情是一个非常糟糕的主意。 OLE2 很慢,还有其他可能更简单的方法来执行此操作。 SQL Loader、外部表、插入/追加、UTL_FILE 等等,使用 Oracle SQL Developer 可能是最简单的方法。使用表单有什么原因吗? 是的,客户希望通过表单而不是从 sql 开发人员或任何其他工具上传数据。我完全同意它太慢了。除了使用表格之外还有其他解决方案吗?谢谢 【参考方案1】:检查列是否返回空值以识别最后一行
Z:=2;
While(Excel.get(1,Z,1) is not null)
loop
v_societe := Excel.get(1,Z,1) ;
v_compte := Excel.get(1,Z,2);
v_Tiers := Excel.get(1,Z,3);
v_section := Excel.get(1,Z,4);
insert into EntrCl (SOCIETE,
COMPTE,
TIERS,
SECTION)
VALUES (v_societe,
v_compte,
v_Tiers,
v_section);
Z:=Z+1;
end loop;
【讨论】:
以上是关于如何使用 Oracle Forms 获取 Excel 文件的最后一行的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Forms 10g 中创建/修改的 Form(FMB) 降级为 Oracle Forms 9
如何使用oracle forms 6i确定允许从表单输入的行数?
如何解决 Oracle Forms 中的“FRM-30408:无效值”错误?