Foxtable(狐表)用户栏目专家坐堂 → 请教从Excel报表提取数据问题


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

主题:请教从Excel报表提取数据问题

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


加好友 发短信
等级:三尾狐 帖子:601 积分:4376 威望:0 精华:0 注册:2018/1/3 16:03:00
请教从Excel报表提取数据问题  发帖心情 Post By:2024/11/18 9:25:00 [显示全部帖子]

蓝老师,我按照狐表使用指南中“从Excel报表提取数据”的提示操作,未能实现,请指导修改一下,在按钮代码如下:

'Excel报表提取数据

For Each file As String In filesys.GetFiles("D:\Data\员工资料卡.xlsx")

    If file.EndsWith(".xls") OrElse file.EndsWith(".xlsx") Then

        Dim Book As New XLS.Book(file)

        Dim Sheet As XLS.Sheet = Book.Sheets(0)

        Dim dr As DataRow = DataTables("员工").AddNew

        dr("姓名") = sheet(4, 1).Text

        dr("部门") = sheet(5, 1).text

        dr("出生日期") = sheet(4, 3).text

        dr("雇佣日期") = sheet(5, 3).text

        dr("性别") = sheet(6, 1).text

        dr("职务") = sheet(6, 3).text

        dr("地址") = sheet(7, 1).text

        dr("家庭电话") = sheet(8, 1).text

        dr("办公电话") = sheet(8, 3).text

        dr("备注") = sheet(9, 0).text

    End If

Next


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


加好友 发短信
等级:三尾狐 帖子:601 积分:4376 威望:0 精华:0 注册:2018/1/3 16:03:00
  发帖心情 Post By:2024/11/18 9:29:00 [显示全部帖子]

提示如下错误
.NET Framework 版本:4.0.30319.36543
Foxtable 版本:2024.10.30.1
错误所在事件:窗口,窗口1,Button1,Click
详细错误信息:
The process cannot access the file 'D:\Data\~$员工资料卡.xlsx' because it is being used by another process.


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


加好友 发短信
等级:三尾狐 帖子:601 积分:4376 威望:0 精华:0 注册:2018/1/3 16:03:00
  发帖心情 Post By:2024/11/18 9:37:00 [显示全部帖子]

上面的错误提示是目录中不带文件名,如带文件名,即For Each file As String In filesys.GetFiles("D:\Data\员工资料卡.xlsx")时,提示如下
.NET Framework 版本:4.0.30319.36543
Foxtable 版本:2024.10.30.1
错误所在事件:窗口,窗口1,Button1,Click
详细错误信息:
目录名称无效。


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


加好友 发短信
等级:三尾狐 帖子:601 积分:4376 威望:0 精华:0 注册:2018/1/3 16:03:00
  发帖心情 Post By:2024/11/18 10:05:00 [显示全部帖子]

关闭所有的execl,也不行,我发一案例,请蓝老师看看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:excel报表提取数据.zip


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


加好友 发短信
等级:三尾狐 帖子:601 积分:4376 威望:0 精华:0 注册:2018/1/3 16:03:00
  发帖心情 Post By:2024/11/18 10:25:00 [显示全部帖子]

For Each file As String In filesys.GetFiles("D:\Data\")
    If file.EndsWith(".xls") OrElse file.EndsWith(".xlsx") Then
        Dim Book As New XLS.Book(file)
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
        Dim dr As DataRow = DataTables("员工").AddNew
        dr("姓名") = sheet(4, 1).Text
        dr("部门") = sheet(5, 1).text
        dr("出生日期") = sheet(4, 3).text
        dr("雇佣日期") = sheet(5, 3).text
        dr("性别") = sheet(6, 1).text
        dr("职务") = sheet(6, 3).text
        dr("地址") = sheet(7, 1).text
        dr("家庭电话") = sheet(8, 1).text
        dr("办公电话") = sheet(8, 3).text
        dr("备注") = sheet(9, 0).text
    End If
Next
修改后,仍提示
.NET Framework 版本:4.0.30319.36543
Foxtable 版本:2024.10.30.1
错误所在事件:窗口,窗口1,Button1,Click
详细错误信息:
Central dir not found.


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


加好友 发短信
等级:三尾狐 帖子:601 积分:4376 威望:0 精华:0 注册:2018/1/3 16:03:00
  发帖心情 Post By:2024/11/18 10:30:00 [显示全部帖子]

在D:\data目录下有“员工资料卡.xlsx”和“员工.xlsx”文件,不是这个原因吧?

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


加好友 发短信
等级:三尾狐 帖子:601 积分:4376 威望:0 精华:0 注册:2018/1/3 16:03:00
  发帖心情 Post By:2024/11/18 11:08:00 [显示全部帖子]

蓝老师,我把“员工资料卡.xlsx”放到了,E:\data下,且只有此一个文件,修改代码为For Each file As String In filesys.GetFiles("E:\Data"),可以了。请问蓝老师如果有多个不同名称的文件,代码中可以指定具体文件名吗,代码怎么修改一下?

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


加好友 发短信
等级:三尾狐 帖子:601 积分:4376 威望:0 精华:0 注册:2018/1/3 16:03:00
  发帖心情 Post By:2024/11/18 11:35:00 [显示全部帖子]

蓝老师,如果“员工资料卡”是Word文件,狐表可以Word报表中提取数据吗?代码怎么修改?

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


加好友 发短信
等级:三尾狐 帖子:601 积分:4376 威望:0 精华:0 注册:2018/1/3 16:03:00
  发帖心情 Post By:2024/11/18 14:54:00 [显示全部帖子]

蓝老师,根据案例中老师提供的代码可以导入“姓名”列,因我对Word表中的位置不知怎么表达,如我要导入“性别”、“有何专长”下面的代码如何修改
Dim dlg As new OpenFileDialog
dlg.MultiSelect = True
If dlg.ShowDialog = DialogResult.OK Then
    Dim app As New MSWord.Application
    try
        If FileSys.DirectoryExists(ProjectPath & "Attachments") = False Then
            FileSys.CreateDirectory(ProjectPath & "Attachments/")
        End If
        For Each filename As String In dlg.FileNames
           
            Dim doc = app.Documents.Open(fileName)
            Dim nr As Row = Tables("个人信息表").AddNew
            Dim t = doc.Tables(1)
            Dim text = t.Cell(1, 2).Range.Text.ToString()
            text = text.Substring(0, text.Length - 2)
            nr("姓名") = text
            Dim text1 = t.Cell(1, 4).Range.Text.ToString()
            text1 = text.Substring(0, text.Length - 2)
            nr("性别") = text1
            '-------------
            app.ActiveWindow.Selection.WholeStory
            For Each shape As object In app.ActiveWindow.Selection.InlineShapes
                If shape.Type = MSWord.WdInlineShapeType.wdInlineShapePicture
                    Dim img As Byte() = shape.Range.EnhMetaFileBits
                    Dim bmp As new Bitmap(new IO.MemoryStream(img))
                    bmp.Save(ProjectPath & "Attachments/" & nr("姓名") & ".jpg")
                End If
            Next
            nr("相片") = nr("姓名") & ".jpg"
            Doc.Close
        Next
    catch ex As exception
        msgbox(ex.message)
    finally
        app.Quit
    End try
End If

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


加好友 发短信
等级:三尾狐 帖子:601 积分:4376 威望:0 精华:0 注册:2018/1/3 16:03:00
  发帖心情 Post By:2024/11/18 15:22:00 [显示全部帖子]

发一表格

 回到顶部
总数 12 1 2 下一页