0

我想问一下是否可以读取 *xls 文件中的数据,然后使用 vb.net 脚本根据员工 ID 获取数据并更新到 *.dbf 文件?如果是,我是否需要先将 xls 转换为 dbf,然后进行更新,还是可以只读取 xls 并更新为 dbf 文件而不进行转换?

4

1 回答 1

0

您可以使用 COM 读取 xls 文件,然后使用从 Excel 读取的数据更新数据库,无需转换任何内容。

说将excel数据转换为access数据库并使用查询从那里更新数据可能更简单。这取决于您的数据有多复杂以及您必须多久执行一次此任务。

顺便说一句,VB.NET 不是一种脚本语言,它是一种预编译语言。我假设通过说“脚本”您正在考虑 vba?不过,您尝试做的事情也可以在 vba 中完成...

更新:

这里有一些关于我认为你应该如何进行的细节。您可以搜索每个步骤所需的所有内容。

从 Excel 中读取数据:

如果可以的话,您应该真正避免自己的大量工作,并将数据导出为 csv 格式文件,并使用StreamReader. 如果你真的需要直接从 Excel 中读取它,你需要走 COM 自动化路线,你应该看看使用Microsoft.Office.Interop.Excel命名空间。它与通过 vba 自动化 Excel 非常相似,因此如果您熟悉它应该相对容易。

将数据写入数据库:

这部分非常简单。使用System.Data.OleDB命名空间创建与数据库的连接,然后OleDBCommand使用正确的查询生成一个插入数据的连接,然后就完成了。如果您有一个复杂的数据库并且想要操作大量数据,您真的应该考虑调整LinqToSQL框架以使用访问或如何使用IQToolkit.

我希望这有帮助。

更新 2:

只记得我在几周前编写了一个将数据写入 Excel 的方法。和读入数据不一样,但应该很相似……其实读入数据应该更简单。看看这是否有助于您入门:

您需要导入Microsoft.Office.Interop.Excel才能使其正常工作

Private Function ExportToExcelFile(ByVal FileName As String) As Boolean

    With New Excel.Application
        With .Workbooks.Add()
            For Each sheet As Worksheet In .Worksheets
                If sheet.Index > 1 Then
                    Call sheet.Delete()
                End If
            Next
            With CType(.Worksheets(1), Worksheet).Range("A1")
                ' Do stuff with the cells in you spreadsheet here
            End With
            Call .SaveAs(FileName)
        End With
        Call .Quit()
    End With

End Function

为了将内容写入您的数据库,这是我最近提供给其他人的一个示例。

于 2013-03-18T04:59:14.700 回答