从Excel报表提取数据

Foxtable可以根据Excel模板批量生成Excel表格,反过来,我们也可以从Excel表格提取数据写入Foxtable。

假定有一个下图所示的Excel文件,发给所有员工自行填写,然后将所有填写好的文件放在同一个目录,现在要求编写代码从这些Excel文件中提取数据,写入到Foxtable的 员工表中:


 

代码是很简单的,只是将Excel各单元格的内容写入新增行对应列而已:

For Each file As String In filesys .GetFiles("c:\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

如果要同时提取照片,可以将代码改为:

For Each file As String In filesys .GetFiles("c:\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
        Dim
fl As String = ProjectPath & "Attachments\" & dr("姓名") & ".jpg"
        If
Sheet(4,4).SaveImage(fl) Then '如果照片保存成功
           
dr("照片") = fileSys.GetName(fl)
        End If
    End If
Next

 


本页地址:http://www.foxtable.com/webhelp/topics/2492.htm