高手请进入

huma123 2004-10-10 08:38:16
请问PB里如何将EXCLE的文件内容,导入到数据窗口中?(EXCEL文件内容的列数与数据窗口的列数相同),请指教!!
...全文
105 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fishead37 2004-10-11
  • 打赏
  • 举报
回复
我是这样实现的:

////将EXCEL导入到DATAWINDOW中.
oleobject ole_in
String ls_path, ls_name

ole_in = Create oleobject
If ole_in.ConnectToNewObject("excel.application") <> 0 Then
Messagebox('连接出错','连接EXCEL出错')
Return
End If

If GetFileOpenName("请选择要导入的文件:",ls_path, ls_name, "XLS","EXCEL文档(*.xls),*.XLS") <> 1 THEN
Messagebox('打开文件','打开文件出错')
Return
End If

String m_id[], m_desc[],m_spec[],u_stock[]
String col_name, aa
any qty[]
Int ii,li_row
li_row = 1
ole_in.visible = False
ole_in.Workbooks.Open (ls_path)

dw_1.Reset()
dw_1.AcceptText()

Do While True
For ii = 1 To 5
col_name = char(64+ii)
ole_in.Range(col_name + string(li_row)).Select //选中当前单元格
Choose Case ii
Case 1
m_id[li_row] = ole_in.ActiveCell.FormulaR1C1
Case 2
m_desc[li_row] = ole_in.ActiveCell.FormulaR1C1
Case 3
m_spec[li_row] = ole_in.ActiveCell.FormulaR1C1
Case 4
u_stock[li_row] = ole_in.ActiveCell.FormulaR1C1
Case 5
qty[li_row] = ole_in.ActiveCell.FormulaR1C1
End Choose
Next
If Len(Trim(m_id[li_row])) = 0 Then
Exit
End If
dw_1.ScrollToRow(dw_1.insertrow(0))
dw_1.setitem(dw_1.GetRow(),'m_id',m_id[li_row])
dw_1.setitem(dw_1.GetRow(),'m_desc',m_desc[li_row])
dw_1.setitem(dw_1.GetRow(),'m_spec',m_spec[li_row])
//dw_1.setitem(dw_1.GetRow(),'u_stock',u_stock[li_row])
//dw_1.setitem(dw_1.GetRow(),'qty',qty[li_row])
li_row ++
Loop
Messagebox('提示','导入成功,请保存!')
//ole_in.Workbooks.close()
Ole_in.DisconnectObject()
Destroy ole_in
lzuyh 2004-10-11
  • 打赏
  • 举报
回复
同意楼上(我不是高手)
wangxichen 2004-10-11
  • 打赏
  • 举报
回复
faq里有
可以直接处理excel,不过如果将Excel保存成dbf或者tab分隔的txt文件处理起来会更好些
dw_1.importfile('文件名(包含全路径)')
  • 打赏
  • 举报
回复
这是以前的帖子上我拷贝下来的 你慢慢看 :)
我是没用过的哈 :)

//***************************************************************//
// 函数名称: GF_EXCEL_TO_DATAWINDOW
// 函数功能: EXCEL文件导入DATAWINDOW
// 参数类型: DWTAWINDOW
// 参数名称: DW
// RETURN : 1 SUCCEED -1 ERROR
// DATE : 2004 3.1
//***************************************************************//

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("信息提示","连接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
dw.settransobject(sqlca)
dw.reset()
excelserver.workbooks.open(str_savename)
excelserver.activesheet.cells.copy
li_count = dw.importclipboard(2) //导入数据
clipboard("")

excelserver.quit()
excelserver.disconnectobject()
destroy excelserver
return 1
else
messagebox('信息提示','没有指定导入文件!')
return -1
end if
amekoxiao 2004-10-10
  • 打赏
  • 举报
回复
转换为txt或dbf文件,然后通过import导入
wang661 2004-10-10
  • 打赏
  • 举报
回复
先把excle文件存为txt文件,然后通过import导入
相关推荐
发帖
DataWindow

603

社区成员

PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
帖子事件
创建了帖子
2004-10-10 08:38
社区公告
暂无公告