以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- merge的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=159786) |
-- 作者:狐狐妞 -- 发布时间:2021/1/8 17:21:00 -- merge的问题 下面是一个批量合并的例子,假定目录c:\\data下有多个Excel文件,这些文件都有一个名为订单的表,需要将这些表中的数据批量并到Foxtable的订单表中: For Each fl As String In FileSys.GetFiles("c:\\Data") ----------------------------------------------------------- 但是名字一样,里面也会重名啊,比如订单, 订单(1),订单(2).......... 能不能不管名字,直接合并里面所有EXCEL的表?如果不行,那么如何解决了? |
-- 作者:有点蓝 -- 发布时间:2021/1/8 17:23:00 -- Excel里面的不同sheet名称是不可能相同的 mg.SourceTableName = "sheet名称"
|
-- 作者:狐狐妞 -- 发布时间:2021/1/8 17:26:00 -- 是啊,我一次要合并30多个excel 文档,因为我们是做教育的,要给每次的学员课程打分,我总不可能在代码里面每个去添加sheet 名称吧? |
-- 作者:有点蓝 -- 发布时间:2021/1/8 17:40:00 -- 名称默认都是sheet1啊,如果30多个excel 文档每个的sheet名称都不一样,那就没有办法使用Merger了。可以考虑这种:http://www.foxtable.com/webhelp/topics/2334.htm |
-- 作者:狐狐妞 -- 发布时间:2021/1/8 17:57:00 -- Dim dlg As New OpenFileDialog dlg.Filter = "excel文件|*.xlsx" dlg.MultiSelect = True \'允许选择多个文件 If dlg.ShowDialog =DialogResult.OK Then For Each fl As String In dlg.FileNames Dim mg As New Merger mg.SourcePath = fl mg.SourceTableName = "调查表$" mg.DataTableName = "打分" mg.Merge() Next End If ‘------------------------------这个是我的代码-----------------------’ 我要合并的是这几个表 谢谢 |
-- 作者:狐狐妞 -- 发布时间:2021/1/8 19:16:00 -- 或者用这种写法: Dim dlg As New OpenFileDialog \'dlg.Filter = "excle文件|*.xlsx" \'dlg.MultiSelect = True \'允许选择多个文件 If dlg.ShowDialog =DialogResult.OK Then \'----------------------------------------------------- Dim Book As New XLS.Book(" 这里怎么填可以一次性上传N个不同名字的xls文件?") Dim Sheet As XLS.Sheet = Book.Sheets(0) Tables("打分").StopRedraw() \'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致 Dim nms() As String = {"知识点","打分"} \'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题 For n As Integer = 1 To Sheet.Rows.Count -1 Dim r As Row = Tables("打分").AddNew() For m As Integer = 0 To nms.Length - 1 r(nms(m)) = Sheet(n,m).Value Next Next End If Tables("打分").ResumeRedraw(), 如何在DIALOG打开以后可选择多个不同名字的文件合并了?谢谢了。。。。。。。 |
-- 作者:狐狐妞 -- 发布时间:2021/1/8 22:58:00 -- 没人回答吗?谢谢:)))))) |
-- 作者:有点蓝 -- 发布时间:2021/1/9 9:07:00 -- Dim dlg As New OpenFileDialog \'dlg.Filter = "excle文件|*.xlsx" dlg.MultiSelect = True \'允许选择多个文件 If dlg.ShowDialog =DialogResult.OK Then \'----------------------------------------------------- Tables("打分").StopRedraw()For Each fl As String In dlg.FileNames
Dim Book As New XLS.Book(fl) Dim Sheet As XLS.Sheet = Book.Sheets(0) |
-- 作者:狐狐妞 -- 发布时间:2021/1/9 10:08:00 -- 谢谢有点甜,现在的代码是这样: Dim dlg As New OpenFileDialog dlg.MultiSelect = True \'允许选择多个文件 If dlg.ShowDialog =DialogResult.OK Then \'----------------------------------------------------- Tables("打分").StopRedraw() For Each fl As String In dlg.FileNames Dim Book As New XLS.Book(fl) Dim Sheet As XLS.Sheet = Book.Sheets(0) Tables("打分").StopRedraw()\'----注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致 Dim nms() As String = {"知识点","打分"} \'-----注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题 For n As Integer = 1 To Sheet.Rows.Count -1 Dim r As Row = Tables("打分").AddNew() For m As Integer = 0 To nms.Length - 1 r(nms(m)) = Sheet(n,m).Value Next Next Next End If Tables("打分").ResumeRedraw() Tables("打分").DataTable.Save MessageBox.show("已经上传完毕","提示") |
-- 作者:有点蓝 -- 发布时间:2021/1/9 10:15:00 -- 应该是测试代码的时候出错,或者代码不合理导致Tables("打分").ResumeRedraw()没有调用到, |