数据导入到数据窗口的设计,请高手帮忙!

sunfor 2009-11-28 11:31:02
看到网上有许多关于EXCEL导入数据窗口的例了,但总觉不适合自己或看不懂!
我就设计了一个自己的构想,思路如下:

EXCEL格式规定:第一行是列名,第二行开始是数据。
表格列1 表格列2 表格列3
101 102 103
201 202 203
201 202 203
...

DW_1是要导入的数据窗口:
窗口列1 窗口列2 窗口列3

DW_2是用户选了EXCEL文件后,自动弹出下面这窗口,程序自动读取EXCEL文件里的各列的列名,
然后以下拉数据的形式分别放到DW_2的各列,让用户选该列是从EXCEL的哪一列导入到这列。
(DW_2数据结构和DW_1是一样的)
-------------------------------
| 窗口列1 | 窗口列2 | 窗口列3 |
-------------------------------
表格列2 表格列3 表格列1∨
           表格列2
           表格列3
当点这里时,就弹出下拉数据(Excel的各列名),让用户选择导入到数据窗口的哪能一列。


当点导入时,DW_1的数据就如下:
窗口列1 窗口列2 窗口列3
102 103 101
202 203 201
202 203 201
...
当dw_1.UPDATE时,有重复数据就跳到这行,让用户改完后再UPDATE。

这个程序有点难度,恳请各位能帮忙写一个较完美的程序!
...全文
201 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunfor 2009-12-12
  • 打赏
  • 举报
回复
今天刚学会插入图片。。。发个图片LOOK。。。
sunfor 2009-12-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 sunfor 的回复:]
还有一个难点:
如何把Excel的各列名,加入到DW_2数据窗口的各列,让各列可作下拉菜单选择!请教各位了.
[/Quote]

简单点说就是:如何把一变量加入到数据窗口的列中(这列是Dropdownlistbox类型的)?
sunfor 2009-12-05
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 jimwoo 的回复:]
C# codeExcelServer.Worksheets('sheet1').usedrange.rows.count//得到总行数
[/Quote]
统计EXCEL里有多少行已OK了!

还有一个难点:
如何把Excel的各列名,加入到DW_2数据窗口的各列,让各列可作下拉菜单选择!请教各位了.



风_雨_晴 2009-12-05
  • 打赏
  • 举报
回复
ExcelServer.Worksheets('sheet1').usedrange.rows.count//得到总行数
sunfor 2009-12-05
  • 打赏
  • 举报
回复
有两个难点:
一.如何把Excel的各列名,加入到DW_2数据窗口的各列,让各列可按下拉菜单!
二.如何统计EXCEL里有多少行?
sun1976 2009-12-01
  • 打赏
  • 举报
回复
如果你会写,你可以找别人写的好的利用以下,以提高开发速度
如果你不会写,你最好自己把它写出来,不要什么都要现成的,不利于提高

思路:
ole,连接到excel
活动sheet复制

然后导入到一个中间的ds或dw,推荐ds,参考帮助查ImportClipboard
OLEObject ExcelServer
ExcelServer = CREATE OLEObject
IF ExcelServer.ConnectToNewObject( "excel.application" ) < 0 THEN
destroy ExcelServer
messagebox('提示','连接EXCEL失败,检查你的系统是否安装了OFFICE,必须安装EXCEL才可以使用该导入功能!')
return
ELSE
excelServer.Workbooks.Open(ls_pathname) //你的导入文件

excelserver.activesheet.cells.copy
ll_return=dw_export.ImportClipboard (2)//从第2行开始
excelserver.displayalerts=FALSE
ExcelServer.quit()
ExcelServer.DisconnectObject()
DESTROY ExcelServer
END IF

后面的根据你的定义,从ds向实际保存数据的dw转移数据,建议先检查,数据没问题后整列复制转移

思路大体如此,自己动手写一写还是有用的
要全部代码的话自己搜嗖现成的也不少
dghj0769 2009-12-01
  • 打赏
  • 举报
回复
这种设计思路很适合大众使用,请各位大侠写个给大家分享。
永生天地 2009-11-30
  • 打赏
  • 举报
回复
lz的想法很好
WellSoft 2009-11-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sunfor 的回复:]
有两个难点:
一.如何把Excel的各列名,加入到DW_2数据窗口的各列,让各列可按下拉菜单!
二.如何统计EXCEL里有多少行?

我想用如下方法,一行一行写入DW_1
for i=2 to 行数
ls_1=trim(string(lo_x.cells[i,1].value))
setitem(...)
next
[/Quote]


不会很难,花点时间就OK!
难点一:先用 dw_1.ImportFile(...........)导入到中间DataWindow或DataStore,并取得列名
难点二: 用for...next就慢了,用列数组复制吧
SEASON16888 2009-11-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fm20027 的回复:]
通过excel导入数据到dw速度比较慢,我试验过200行还可以,多了就很慢了,不如用txt文件快。
曾写过一个函数,可以直接调用。留下e_mail,给你发过去试试。
[/Quote]

season168@163.com 顺便给我发一个吧 感激不尽 3Q
fm20027 2009-11-28
  • 打赏
  • 举报
回复
通过excel导入数据到dw速度比较慢,我试验过200行还可以,多了就很慢了,不如用txt文件快。
曾写过一个函数,可以直接调用。留下e_mail,给你发过去试试。
sunfor 2009-11-28
  • 打赏
  • 举报
回复
有两个难点:
一.如何把Excel的各列名,加入到DW_2数据窗口的各列,让各列可按下拉菜单!
二.如何统计EXCEL里有多少行?

我想用如下方法,一行一行写入DW_1
for i=2 to 行数
ls_1=trim(string(lo_x.cells[i,1].value))
setitem(...)
next
sunfor 2009-11-28
  • 打赏
  • 举报
回复
更正:
然后以下拉数据的形式分别放到DW_1的各列,让用户选该列是从EXCEL的哪一列导入到这列。
中的dw_1应改为:DW_2

然后以下拉数据的形式分别放到DW_2的各列,让用户选该列是从EXCEL的哪一列导入到这列。
fuxiaoyang13 2009-11-28
  • 打赏
  • 举报
回复
也给我一份吧,fuxiaoyang13@sina.com.cn 多谢!!!
sunfor 2009-11-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fm20027 的回复:]
通过excel导入数据到dw速度比较慢,我试验过200行还可以,多了就很慢了,不如用txt文件快。
曾写过一个函数,可以直接调用。留下e_mail,给你发过去试试。
[/Quote]
E_mail:sunfor@163.com 多谢!
wsz0812 2009-11-28
  • 打赏
  • 举报
回复
也给我一个吧!谢谢了!

763936887@qq.com

611

社区成员

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

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