数据导入到数据窗口的设计,请高手帮忙!该怎么解决
数据导入到数据窗口的设计,请高手帮忙!
看到网上有许多关于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的想法很好
------解决方案--------------------
------解决方案--------------------
如果你会写,你可以找别人写的好的利用以下,以提高开发速度
如果你不会写,你最好自己把它写出来,不要什么都要现成的,不利于提高
思路:
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转移数据,建议先检查,数据没问题后整列复制转移
思路大体如此,自己动手写一写还是有用的
要全部代码的话自己搜嗖现成的也不少
------解决方案--------------------
看到网上有许多关于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的想法很好
------解决方案--------------------
------解决方案--------------------
如果你会写,你可以找别人写的好的利用以下,以提高开发速度
如果你不会写,你最好自己把它写出来,不要什么都要现成的,不利于提高
思路:
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//得到总行数