Foxtable(狐表)用户栏目专家坐堂 → [求助]如何将一个文件夹中的所有EXCEL合并或导入到一个表中


  共有2618人关注过本帖树形打印复制链接

主题:[求助]如何将一个文件夹中的所有EXCEL合并或导入到一个表中

帅哥哟,离线,有人找我吗?
18523982317
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:857 积分:6156 威望:0 精华:0 注册:2015/12/24 13:02:00
  发帖心情 Post By:2016/10/28 14:30:00 [显示全部帖子]

表结构和导入的表结构一样的话。。。用个for  next就可以了啊    帮助里给出的导入是默认为 Book.Sheets(0),就是第一个工作表,你要导入整个工作簿,前面加个循环就行了。。。 

for i as 。。。。
Book.Sheets(i)
next



 回到顶部
帅哥哟,离线,有人找我吗?
18523982317
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:857 积分:6156 威望:0 精华:0 注册:2015/12/24 13:02:00
  发帖心情 Post By:2016/10/28 14:38:00 [显示全部帖子]

以下是引用ybmjy在2016/10/28 14:34:00的发言:
都是第一个工作表,只是文件夹中有30个各单位报上来的,不晓得怎么写代码了
额   我理解错了,但是方法也有,如果30个表,那么把表名做成个数组,然后把依次读数组的值,把路径和数组的值合并,就是你要导入的表,后面导入的代码都可以在帮助里找得到
想要简单点,就把表名设成1 2 3......
然后for  next  就可以了。
至于如何读取路径,帮助里的代码变一下就可以了


 回到顶部
帅哥哟,离线,有人找我吗?
18523982317
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:857 积分:6156 威望:0 精华:0 注册:2015/12/24 13:02:00
  发帖心情 Post By:2016/10/28 14:39:00 [显示全部帖子]

我好像记得帮助里还有代码 可以改成读取文件夹内,所有文件的名字。。。读取出来放一个数组里。。。。

 回到顶部
帅哥哟,离线,有人找我吗?
18523982317
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:857 积分:6156 威望:0 精华:0 注册:2015/12/24 13:02:00
  发帖心情 Post By:2016/10/28 14:44:00 [显示全部帖子]

http://www.foxtable.com/webhelp/
找到了
GetFiles,返回该目录下的所有文件名,然后for next 这个集合,然后在加上路径,然后再导入。。。

 回到顶部
帅哥哟,离线,有人找我吗?
18523982317
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:857 积分:6156 威望:0 精华:0 注册:2015/12/24 13:02:00
  发帖心情 Post By:2016/10/28 15:11:00 [显示全部帖子]

C盘不可取,里面有N多个文件。。。。。
我也属于半菜鸟级别的。。。试着写看。。。把文件存在c盘文件夹下

dim str() as string =  FileSys.GetFiles("C:\xxx")
dim sts as new list(of string)
sts。addrange(str)
for i as  inter...  = 0 to sts.count -1 step +1
......

sts(i)就是文件名,把c:\xxx和sts(i)合并,就等于路径了。。。。

下面是我在我的系统里用的工资导入系统,但是有些慢。。。将就用。。。水平有限。。。我也只能说说思路。。。。

 Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Tables("工资导入").StopRedraw()
   
   
    For sr As Integer = 1 To sheet.Rows.Count -1
        Dim r As Row = Tables("工资导入").AddNew
        For sc As Integer = 0 To sheet.Cols.Count -1
            For Each dc As DataCol In DataTables("工资导入").DataCols
                If dc.Name = sheet(0,sc).Value Then
                    r(dc.name) = sheet(sr,sc).Value
                End If
            Next
        Next
        c = c +1
        p.Value = c
    Next
    Tables("工资导入").ResumeRedraw()

[此贴子已经被作者于2016/10/28 15:11:36编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
18523982317
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:857 积分:6156 威望:0 精华:0 注册:2015/12/24 13:02:00
  发帖心情 Post By:2016/10/28 15:13:00 [显示全部帖子]

用官方的也行。。。只不过我的表结构和导入的表结构有点不一样,官方的 没法用。。。

 回到顶部