如何将Excel文件的内容导入DataWindow???急急!!!在线等!!

oldbeard 2006-06-17 09:54:42
各位朋友:我遇到一个难题,请知道的朋友帮帮忙,如何将Excel文件的内容导入DataWindow???,本人万分感谢,我的联系方式QQ:35361735,E_mail:oldbeard@163.com.
...全文
571 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
panda3033 2007-01-30
  • 打赏
  • 举报
回复
都是好东西啊
ilyvmly 2006-08-10
  • 打赏
  • 举报
回复
我刚才用过的代码,你看看,试试:
oleobject xlapp,xlsub
xlapp = CREATE OLEObject
integer li_ret
string ls_name,cldm1,clmc1,ggcs1,dw1,xh
double qgj1,bsj1,bdj1,ysj1
integer i,j
string docname, named
integer value
value = GetFileOpenName("选择文件",docname,named, "xls","EXCEL文件(*.XLS),*.XLS,")
IF value=1 THEN
li_ret = xlapp.ConnectToNewObject("Excel.Application")
if li_ret <> 0 then
MessageBox("错误!","无法启动excel程序!")
return 0
end if
else
MessageBox("错误!","无法打开文件!")
return
end if
openwithparm(w_message,"正在导入...")
xlapp.application.workbooks.open(docname)
xlsub=xlapp.application.activeworkbook.worksheets[5]
delete from clsx;
commit;
for i=2 to 1785
cldm1=trim(xlsub.cells[i,1].value)
clmc1=trim(xlsub.cells[i,2].value)
ggcs1=trim(xlsub.cells[i,3].value)
dw1=trim(xlsub.cells[i,4].value)
qgj1=double(xlsub.cells[i,5].value)
bsj1=double(xlsub.cells[i,6].value)
bdj1=double(xlsub.cells[i,7].value)
ysj1=double(xlsub.cells[i,8].value)
xh=string(i - 1)
//这里是直接插入表中,如果你要插入到dw,就直接把取得的数据setitem到数据窗口的column即可。还有,这里的提示加入你没有w_message的话,你改一改就可以了。
insert into clsx values(:xh,:cldm1,:clmc1,:ggcs1,:dw1,0,0,:qgj1,:bsj1,:bdj1,:ysj1,0,' ',' ');
commit using sqlca;

w_message.st_1.text="已经完成:"+string(i - 1)+"/"+string(1785)
end for
xlapp.application.workbooks.close("g:\bzclk.xls")
DESTROY xlapp;
w_message.st_1.text="正在提取数据!请稍候..."
dw_1.settransobject(sqlca)
dw_1.retrieve()
close(w_message)
robenhands 2006-08-09
  • 打赏
  • 举报
回复
楼上大虾,请问为什么我用你的 程序只能导入最后一个sheet中的数据,而前面的则不能导入?敬请指教!
霖湘凝 2006-08-09
  • 打赏
  • 举报
回复
因为他只处理了当前的一个sheet
whisperlgy 2006-07-05
  • 打赏
  • 举报
回复
给你一个函数:
//====================================================================
// 事件: gf_excel_to_datawindow
//--------------------------------------------------------------------
// 函数功能: EXCEL文件导入DATAWINDOW ,EXCEL文件的列次序与dw要一致,
//--------------------------------------------------------------------
// 参数:
// value datawindow ad_dw
//--------------------------------------------------------------------
// 返回值: integer 1 SUCCEED -1 ERROR
//--------------------------------------------------------------------
// 作者: 刘光阳 日期: 2006-07-03
//--------------------------------------------------------------------
// 修改历史:
//
//====================================================================

String str_savename,named,s_grxh
Int excelok,li_net
Long li_count,i


oleobject excelserver
excelserver = CREATE oleobject
excelok = excelserver.ConnectToNewObject("excel.application")

//检查返回值,以确保已成功地连接到了Excel
IF excelok <> 0 THEN
//这是我自定义的messagebox,替换成PB自己的就可以
inv_msg.of_msgbox("信息提示","连接EXCEL失败,请检查计算机中是否安装了EXCEL!")
RETURN -1
END IF
li_net = GetFileOpenName("选择文件", str_savename,named,"xls","Excel文件(*.xls),*.xls")
IF li_net > 0 THEN
IF str_savename = "" THEN RETURN -1
ad_dw.SetTransObject(sqlca)
ad_dw.Reset()
excelserver.workbooks.Open(str_savename)
excelserver.activesheet.cells.Copy
li_count = ad_dw.ImportClipboard(2) //导入数据
Clipboard("")

excelserver.quit()
excelserver.DisconnectObject()
DESTROY excelserver
RETURN 1
ELSE
inv_msg.of_msgbox('信息提示','没有指定导入文件!')
RETURN -1
END IF
haifeng123456789 2006-07-03
  • 打赏
  • 举报
回复
用DDE很慢.用oleobject较好
lzuyh 2006-07-03
  • 打赏
  • 举报
回复
如果是固定的Excel格式,可能好办点。
使用Openchannel建立连接(Excel文件要先手工打开)
然后使用getremote一个一个cell读,填入对应的datawindow
我以前就是这么做的
==================================================
同意
delstat 2006-07-03
  • 打赏
  • 举报
回复
如果是固定的Excel格式,可能好办点。
使用Openchannel建立连接(Excel文件要先手工打开)
然后使用getremote一个一个cell读,填入对应的datawindow
我以前就是这么做的
hangzhou6274 2006-06-21
  • 打赏
  • 举报
回复
自己写oleobject从excel里面读取数据
dragon45 2006-06-21
  • 打赏
  • 举报
回复
先另寸为txt再导入
prodeity 2006-06-17
  • 打赏
  • 举报
回复
importfile函数

609

社区成员

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

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