hur.cn - 华软网

 热门搜索

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

  作者:未知    来源:网络    更新时间:2019/4/16
列位朋友:我遇到一个难题,请知道的朋友帮帮助,如何将Excel资料的内容导入DataWindow???,自己万分谢谢,我的联系方式QQ:35361735,E_mail:oldbeard@163.com.
------华软网友回答------
importfile函数
------华软网友回复------
先另寸为txt再导入
------华软网友回复------
自己写oleobject从excel里面读取数据
------华软网友回复------
如果是固定的Excel格式,可能好办点。
运用Openchannel建立连接(Excel资料要先手工打开)
然后运用getremote一个一个cell读,填入对应的datawindow
我以前就是这么做的
------华软网友回复------
如果是固定的Excel格式,可能好办点。
运用Openchannel建立连接(Excel资料要先手工打开)
然后运用getremote一个一个cell读,填入对应的datawindow
我以前就是这么做的
==================================================
赞成
------华软网友回复------
用DDE很慢.用oleobject较好
------华软网友回复------
给你一个函数:
//====================================================================
// 事件: 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

------华软网友回复------
楼上大虾,请问为什么我用你的 程序只可导入最后一个sheet中的数据,而前面的则不能导入?敬请指教!

------华软网友回复------
由于他只措置惩罚了当前的一个sheet
------华软网友回复------
我适才用过的代码,你看看,试试:
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)
------华软网友回复------
都是好东西啊      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。