以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  窗口按钮导入导出功能如何实现  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=35193)

--  作者:xu3180497
--  发布时间:2013/6/26 9:02:00
--  窗口按钮导入导出功能如何实现

窗口上有两个table 控件,绑定了两张表(这两张表具有关联),旁边有导入和导出两个按钮,现在不知道如何实现导入功能,就是单击导入按钮后,会弹出一个对话框,让用户选择导入的文件,然后按照一定的规则进行转换成为表中的数据。同时导出功能现在已经基本实现,就是想导出的时候也能够弹出对话框让用户选择保存路径,文件格式和文件名。而不是系统写死的路径名。

窗体界面如下:

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130626090150.png
图片点击可在新窗口打开查看
导出代码如下:

Dim Book As New XLS.Book(ProjectPath & "模板\\设备说明.xlsx")
Dim fl As String = ProjectPath & "Reports\\设备说明.xlsx"
Book.Build() \'生成细节区
Book.Save(fl) \'保存工作簿
Dim Proc As New Process \'打开工作簿
Proc.File = fl
Proc.Start()

 


--  作者:Bin
--  发布时间:2013/6/26 9:07:00
--  

保存对话框http://www.foxtable.com/help/topics/0329.htm
--  作者:狐狸爸爸
--  发布时间:2013/6/26 9:08:00
--  

你可以看看:

 

http://www.foxtable.com/help/topics/0329.htm

 

例如:

 

Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim Book As New XLS.Book(ProjectPath & "模板\\设备说明.xlsx")
    Book.Build() \'生成细节区
    Book.Save(dlg.FileName) \'保存工作簿
    Dim Proc As New Process \'打开工作簿
    Proc.File = dlg.FileName
    Proc.Start()
End If


--  作者:xu3180497
--  发布时间:2013/6/26 10:19:00
--  

谢谢你的回答,我按照帮助的要求在导入的时候却提示我该表已存在,我想是不是只能将excel的表数据导入到新的表中?能不能将excel的数据作为一条新的记录导入到已经存在的表中?如果能的话,那在导入过程中excel的格式跟目标表的格式不一样的话要怎么相互转换识别?

导入代码:

Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter= "Excel 97-2003 工作簿(*.xls)|*.xls|Excel 工作簿(*.xlsx)|*.xlsx" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim ip As New Importer
    ip.SourcePath = dlg.FileName \'指定数据文件
    ip.SourceTableName = "基本信息表" \'指定要导入的表
    ip.NewTableName ="基本信息表" \'导入后的表名
    ip.Import()
End If


--  作者:xu3180497
--  发布时间:2013/6/26 10:20:00
--  

谢谢你的回答,我按照帮助的要求在导入的时候却提示我该表已存在,我想是不是只能将excel的表数据导入到新的表中?能不能将excel的数据作为一条新的记录导入到已经存在的表中?如果能的话,那在导入过程中excel的格式跟目标表的格式不一样的话要怎么相互转换识别?(excel的格式就是我导出的时候的模板格式,而不是和目标表一样的格式)

导入代码:

Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter= "Excel 97-2003 工作簿(*.xls)|*.xls|Excel 工作簿(*.xlsx)|*.xlsx" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim ip As New Importer
    ip.SourcePath = dlg.FileName \'指定数据文件
    ip.SourceTableName = "基本信息表" \'指定要导入的表
    ip.NewTableName ="基本信息表" \'导入后的表名
    ip.Import()
End If


--  作者:狐狸爸爸
--  发布时间:2013/6/26 10:22:00
--  

除了导入,还有合并啊:

http://www.foxtable.com/help/topics/0685.htm


--  作者:xu3180497
--  发布时间:2013/6/26 10:53:00
--  

可否告知qq或者联系方式,我在论坛发不了图片了,不知道为什么,总是提示我"一次只能上传三个文件”,可是我什么都没上传,想将上传的图片删了,提示没有管理权限。可以加我qq:1169755725,谢谢!


--  作者:xu3180497
--  发布时间:2013/6/26 11:28:00
--  

终于可以发了。大神,合并有问题啊,不知道怎么解决?


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130626104745.png
图片点击可在新窗口打开查看

 

合并的原始excel是设备说明.xlsx,sheet名称是设备说明,想要合并到的表是基本信息表和附属设备表。

基本信息表的列比excel里显示的列多。附属设备表也是比excel显示的列多。

基本信息表和附属设备表:  


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130626103212.png
图片点击可在新窗口打开查看

想要合并的excel格式:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:设备说明.xlsx

请大神帮助解答疑惑,谢谢!
--  作者:狐狸爸爸
--  发布时间:2013/6/26 11:31:00
--  

你这个是excel2007/2010的格式,记得设置文件格式:

 

    Dim mg As New Merger
    mg.SourcePath = 文件名
    mg.Format = "excel2007" \'指定格式
    mg.SourceTableName = "订单" \'指定要合并的表
    mg.DataTableName = "订单" \'指定接收数据的表
    mg.Merge() \'开始合并


--  作者:xu3180497
--  发布时间:2013/6/26 13:29:00
--  

提示找不到对象啊,怎么回事呢?

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130626132734.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130626132743.png
图片点击可在新窗口打开查看
代码:

Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter= "Excel 97-2003 工作簿(*.xls)|*.xls|Excel 工作簿(*.xlsx)|*.xlsx" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim mg As New Merger
    mg.SourcePath = dlg.FileName
    mg.Format = "excel2007" \'指定格式
    mg.SourceTableName = "设备说明"
    mg.DataTableName = "基本信息表"
    mg.Merge()
End If

其中设备说明是Excel的名称,也是excel里面sheet1的表名称。

基本信息表示项目中表名称。