如何用脚本在PB中将EXCEL导入到SQL中?

eracn 2003-12-15 05:17:16
如何用脚本在PB中将EXCEL导入到SQL中?
...全文
196 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinkiangscorpio 2003-12-26
  • 打赏
  • 举报
回复
同意楼上的,importfile和数据窗口更新最简单
hsc456 2003-12-23
  • 打赏
  • 举报
回复
我以前写过一个这样的程序,我的方法是:
1。将EXCEL文件另存为文本文件(TXT),TXT文件要配合importfile()中参数,一定要是Tab分隔的。
2。通过importfile()函数把TXT文件入到DATAWINDOW中,
3。把DATAWINDOW中的数据UPDATE到数据库中就OK了。


importfile()你可以查帮助获得它的语法。
joss 2003-12-18
  • 打赏
  • 举报
回复
查查FAQ好啦,以前有相同贴子!
sunxiongjie 2003-12-18
  • 打赏
  • 举报
回复
eracn(蓝昕)先生/女士
可不可以直接提供代码??先行谢过。
sunxiongjie 2003-12-18
  • 打赏
  • 举报
回复
eracn(蓝昕)先生/女士
不用OLE你用的什么方法?我用OLE在向数据库提交数据的时候是有点问题。
mittee 2003-12-18
  • 打赏
  • 举报
回复
用数据管道,建立连接就可以
flyerlxg 2003-12-17
  • 打赏
  • 举报
回复
study and help you up
lywangyong 2003-12-17
  • 打赏
  • 举报
回复
importfile函数的描述:Inserts data into a DataWindow control or DataStore from a file. The data can be tab-delimited text or dBase format 2 or 3.
从描述可看出并不支持从excel直接import的。
我用的也是类似workhand(☆★★★☆) 的OLE方法。
  • 打赏
  • 举报
回复
通过importfile()函数处理
filename = getfileopenname()
dw_name.importfile(filename)
for i = dw_name.rowcount() to 1 next -1
获取每一行数据,进行处理
写入数据库
next
eracn 2003-12-17
  • 打赏
  • 举报
回复
我用的方法和你们的顺序不一样。
我是直接读取EXCEL表中的数据到数据库中,再retrieve至DATAWINDOW。

我不太清楚此时用OLE的效率与我的方法的效率比较。
不然可以不用OLE啊
workhand 2003-12-16
  • 打赏
  • 举报
回复
再有一个菜问题,如何用OLE将EXCEL导入DATAWINDOW中?
//////
Long value,Ll_col,Ll_01,Ll_row
String Ls_path,Ls_filename,Ls_cx


Is_syspath=space(255)
GetCurrentDirectoryA(255,Is_syspath)
value=GetFileopenname("请选择要导入BOM的EXECL类型文件!",ls_path,ls_filename,'xls','EXECL 文件(*.xls),*.xls')

is_filename = mid(ls_filename,1,len(ls_filename) - 4)

if value <> 1 then ////没取到、或者取消返回
Return false
end if

if luo_excel.connecttoobject("","Excel.Application") <> 0 then
if luo_excel.ConnectToNewObject("Excel.Application") <> 0 then
messagebox(gs_tsxx,'连接excel失败请稍后再试!')
return false
end if
end if
SetPointer(HourGlass!)

luo_excel.workbooks.open(ls_path)
luo_sub = luo_excel.application.workbooks(ls_filename).worksheets(1)
/////////// 取出数据区域

ll_col=2
do while 1=1
luo_sub.cells(ll_col,1).copy()
tab_1.tabpage_1.sle_2.paste()
ls_cx=trim(tab_1.tabpage_1.sle_2.text)
if trim(tab_1.tabpage_1.sle_2.text)="" or isnull(tab_1.tabpage_1.sle_2.text) then
exit
end if
tab_1.tabpage_1.sle_2.text=''
ll_col++
loop
//////////Ll_col 记录总的行数
if ll_col<2 then goto out//空的Excel,

//删除PIM_BOM表中原有数据
delete from inv_usedquota2;
tab_1.tabpage_1.dw_8.reset()
tab_1.tabpage_1.dw_8.retrieve()
////////////取数
ll_01=2
//从第三行开始取数
do while ll_01<= ll_col - 1
ll_row=tab_1.tabpage_1.dw_8.insertrow(0)
tab_1.tabpage_1.sle_2.text=''
luo_sub.cells(ll_01,1).copy()
tab_1.tabpage_1.sle_2.paste()
ls_cx=trim(tab_1.tabpage_1.sle_2.text)
if left(ls_cx,1)='"' then
ls_cx=right(ls_cx,len(ls_cx) - 1)
end if

tab_1.tabpage_1.sle_2.text=''
tab_1.tabpage_1.dw_8.setitem(ll_row,'wlh',ls_cx)

luo_sub.cells(ll_01,2).copy()
tab_1.tabpage_1.sle_2.paste()
ls_cx=trim(tab_1.tabpage_1.sle_2.text)
tab_1.tabpage_1.sle_2.text=''
tab_1.tabpage_1.dw_8.setitem(ll_row,'zwlh',ls_cx)

luo_sub.cells(ll_01,5).copy()
tab_1.tabpage_1.sle_2.paste()
ls_cx=trim(tab_1.tabpage_1.sle_2.text)
if left(ls_cx,1)='"' then
ls_cx=right(ls_cx,len(ls_cx) - 1)
end if
tab_1.tabpage_1.sle_2.text=''
tab_1.tabpage_1.dw_8.setitem(ll_row,'de',dec(ls_cx))


luo_sub.cells(ll_01,9).copy()
tab_1.tabpage_1.sle_2.paste()
ls_cx=trim(tab_1.tabpage_1.sle_2.text)
if left(ls_cx,1)='T' or left(ls_cx,1)='t' then
ls_cx='1'
else
ls_cx='0'
end if
tab_1.tabpage_1.sle_2.text=''
tab_1.tabpage_1.dw_8.setitem(ll_row,'fjbs',integer(ls_cx))

ll_01++
loop
out:
luo_excel.application.workbooks(ls_filename).close(false)
luo_excel.application.quit()
luo_excel.disconnectobject()

///向数据库提交数据
if tab_1.tabpage_1.dw_8.update() = 1 then
commit;
else
messagebox('',sqlca.sqlerrtext)
rollback;
Return false
end if
return true
eracn 2003-12-16
  • 打赏
  • 举报
回复
最终数据的导入工作由用户自己完成。
EXCEL表中的数据格式相对固定,即列固定,行有变化。

再有一个菜问题,如何用OLE将EXCEL导入DATAWINDOW中?
eracn 2003-12-16
  • 打赏
  • 举报
回复
不希望通过读CELL的方式
eracn 2003-12-16
  • 打赏
  • 举报
回复
对行、列都有要求。即只要截取其中的一些行列。

然后还要导成固定格式的DBF表
eracn 2003-12-16
  • 打赏
  • 举报
回复
我可以不通过OLE,直接读取相应EXCEL表中各CELL中数据插入数据库中啊。
不太清楚此时用OLE的目的,帮忙讲一下好吗?
wwwafa9 2003-12-16
  • 打赏
  • 举报
回复
我帮你up!!
liliang800207 2003-12-15
  • 打赏
  • 举报
回复
OLE把excel倒到数据窗口
再update()不就行了
freebirdwjy 2003-12-15
  • 打赏
  • 举报
回复
把EXEL导入到DATAWINDOW,再把DATAWINDOW保存不就行了吗。
hzhxxx 2003-12-15
  • 打赏
  • 举报
回复


我也来错点分
dotnba 2003-12-15
  • 打赏
  • 举报
回复
DTS、数据管道,OLE逐CELL读
呵呵,我也不清楚

743

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧