首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

数据导入到数据窗口的设计,请高手帮忙!该怎么解决

2012-02-14 
数据导入到数据窗口的设计,请高手帮忙!看到网上有许多关于EXCEL导入数据窗口的例了,但总觉不适合自己或看

数据导入到数据窗口的设计,请高手帮忙!
看到网上有许多关于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。

这个程序有点难度,恳请各位能帮忙写一个较完美的程序!

[解决办法]
通过excel导入数据到dw速度比较慢,我试验过200行还可以,多了就很慢了,不如用txt文件快。
曾写过一个函数,可以直接调用。留下e_mail,给你发过去试试。
[解决办法]
lz的想法很好
[解决办法]

探讨
有两个难点:
一.如何把Excel的各列名,加入到DW_2数据窗口的各列,让各列可按下拉菜单!
二.如何统计EXCEL里有多少行?

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

[解决办法]
如果你会写,你可以找别人写的好的利用以下,以提高开发速度
如果你不会写,你最好自己把它写出来,不要什么都要现成的,不利于提高

思路:
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转移数据,建议先检查,数据没问题后整列复制转移

思路大体如此,自己动手写一写还是有用的
要全部代码的话自己搜嗖现成的也不少
[解决办法]
C# code
ExcelServer.Worksheets('sheet1').usedrange.rows.count//得到总行数 

热点排行