从文本文件创建Access表

时间:2016-10-20 11:49:20

标签: database ms-access

我想知道是否可以从文本文件创建Access数据库表。 例如,像这样的文本文件:

#Tom
Age:12 
Info: Tall
#Alice
Age: 20
Info: Nice

应转换为包含3个参数(名称,年龄和信息)的表,其中包含Tom和Alice的信息。 另一个例子是文本文件:

Tim
-------
A tall 12 years old. 
Good In basketball

Jak
-------
A short 30 years old guy. 
Bad at sports 
Bald

应将其转换为包含2个参数的表 - 年龄和信息。 如果需要编码,我更喜欢使用c#,尽管Java也是一种选择。

提前致谢:D

2 个答案:

答案 0 :(得分:0)

经过广泛的搜索,我找到了解决方案。 我将文本加载到c#中的字符串中,而不是使用Microsofts API构建excel表。 在您获得excel电子表格将其转换为访问权限后,使用Access'内置功能

答案 1 :(得分:0)

在VBA中执行此操作可能更容易 - 而且您不需要编写一些混乱的c#(但是,如果您实际上是使用c#,那么任何有能力的编码器都可以轻松读取某些VBA并只输入c#行代码 - 假设你实际上是用C#编写的。

因此,导入第一个文本文件并将数据写入表格的VBA将如下所示:

Sub Import1()

  Dim intfileH   As Integer
  Dim strBuf     As String
  Dim rst        As DAO.Recordset
  Dim strRec, vBuf, strRecDetail

  intfileH = FreeFile()
  Open "c:\test\text1.txt" For Input As #intfileH
  strBuf = Input(LOF(intfileH), #intfileH)
  Set rst = CurrentDb.OpenRecordset("tblNames")

  vBuf = Split(strBuf, "#")
  For Each strRec In vBuf
     If strRec <> "" Then
        strRecDetail = Split(strRec, vbCrLf)
        With rst
           .AddNew
           !MyName = strRecDetail(0)
           !age = Split(strRecDetail(1), ":")(1)
           !Info = Split(strRecDetail(2), ":")(1)
           .Update
        End With
     End If
  Next

  rst.Close
  Close (intfileH)

End Sub

对于第二个数据,大致相同,这将起作用:

Sub Import2()

  Dim intfileH   As Integer
  Dim strBuf     As String
  Dim rst        As DAO.Recordset
  Dim vBuf, strRec
  Dim i          As Integer

  intfileH = FreeFile()
  Open "c:\test\text2.txt" For Input As #intfileH
  strBuf = Input(LOF(intfileH), #intfileH)
  Set rst = CurrentDb.OpenRecordset("tblNames")

  vBuf = Split(strBuf, vbCrLf)
  For i = 0 To UBound(vBuf)
     If vBuf(i) <> "" Then

        With rst
           .AddNew
           !MyName = vBuf(i)
           i = i + 2
           !age = Split(vBuf(i), " ")(2)
           i = i + 1
           !Info = vBuf(i)
           .Update
        End With
     End If
     i = i + 1
  Next

  rst.Close
  Close (intfileH)

End Sub