文本文件中存储了一定格式的数据,但是不是标准的数据库格式,故不可能直接用database对象操作。
数据的存储格式基本为:开始一段为说明性文字,换行付之后为需要进入数据库的数据,数据之间行与行之间以换行符隔开,列与列之间以空格隔开,但是存在数据为空的单元(表现为空格)。
请问各位大虾,还有其他什么可行的办法可以将这样的文本文件转换到access数据库吗?
数据的存储格式基本为:开始一段为说明性文字,换行付之后为需要进入数据库的数据,数据之间行与行之间以换行符隔开,列与列之间以空格隔开,但是存在数据为空的单元(表现为空格)。
请问各位大虾,还有其他什么可行的办法可以将这样的文本文件转换到access数据库吗?
中原高速(600020)
————XY纵横财经 版权所有 授权使用————
`一、特别提示` XY纵横财经 XY.COM.CN…………中间省略
` 九、该公司公告` XY纵横财经 XY.COM.CN
…………中间省略
资者定价配售发行28000万股A股,价格6.36元/股。2003年8月8日,“中原高
速”(A股)在上交所上市。
注:以上公司基本概况数据截止日期:20031027` 十一、资产负债表` XY纵横财经 XY.COM.CN
────────┬──────┬──────┬──────┬──────
名称\年度 │ 2003年中期│ 2002年末期│ 2001年末期│ 2000年末期
────────┼──────┼──────┼──────┼──────
总资产(万元) │ 290035.82│ 325295.31│ 271730.07│ 227866.15
流动资产(万元) │ 42626.36│ 77275.97│ 23030.53│ 2063.49
货币资金(万元) │ 40941.59│ 75713.20│ 18319.98│ 1795.68
应收帐款(万元) │ 1559.32│ 1549.76│ 4073.87│ 267.80
存货净额(万元) │ --│ --│ --│ --
长期投资(万元) │ --│ --│ --│ --
固定资产(万元) │ 228736.92│ 227760.67│ 226131.63│ 220693.93
无形资产(万元) │ 18672.54│ 20258.68│ 22567.90│ 5108.73
流动负债(万元) │ 7990.03│ 57553.22│ 44679.91│ 82411.19
短期借款(万元) │ --│ 5000.00│ 10000.00│ --
长期负债(万元) │ 93000.00│ 93000.00│ 83000.00│ 27000.00
股东权益(万元) │ 189045.79│ 174742.10│ 144050.16│ 118454.96
资本公积金(万元)│ 41454.96│ 41454.96│ 41454.96│ 41454.96
盈余公积金(万元)│ 11257.43│ 11257.43│ 5119.04│ --
每股净资产(元) │ 2.4551│ 2.2694│ 1.8708│ 1.5384
调整每股净资产 │ --│ --│ --│ --
股东权益比率(%) │ 65.180│ 53.718│ 53.012│ 51.984
资产负债率(%) │ 34.820│ 46.282│ 46.988│ 48.016
每股公积金(元) │ 0.5384│ 0.5384│ 0.5384│ 0.5384
────────┴──────┴──────┴──────┴──────
注:"调整每股净资产"单位为元` 十二、损益表` XY纵横财经 XY.COM.CN
─────────┬─────┬─────┬─────┬─────
名称\年度 │2003年中期│2002年末期│2001年末期│2000年末期
─────────┼─────┼─────┼─────┼─────
主营业务收入(万元)│ 36320.43│ 68165.91│ 49297.59│ 31965.11
主营业务利润(万元)│ 24319.85│ 45363.23│ 32270.06│ 15398.09
其他业务利润(万元)│ -41.61│ -6.29│ --│ --
营业费用(万元) │ --│ 576.00│ --│ --
管理费用(万元) │ 985.51│ 2664.96│ 1187.48│ 455.87
财务费用(万元) │ 2395.64│ 4683.58│ 5430.51│ 5257.33
投资收益(万元) │ --│ --│ --│ --
利润总额(万元) │ 21348.80│ 37488.56│ 25595.20│ 9678.65
净利润(万元) │ 14303.70│ 30691.94│ 25595.20│ 8360.77
未分配利润(万元) │ 59333.41│ 45029.71│ 20476.16│ --
每股收益(元) │ 0.186│ 0.399│ 0.332│ 0.109
净资产收益率(%) │ 7.570│ 17.560│ 17.770│ 7.059
每股未分配利润(元)│ 0.771│ 0.585│ 0.266│ --
─────────┴─────┴─────┴─────┴─────` 十三、现金流量表` XY纵横财经 XY.COM.CN
───────────┬──────┬──────┬──────┬──────
名称\年度(万元) │ 2003年中期│ 2002年末期│ d │c
───────────┼──────┼──────┼──────┼──────
经营活动现金流入 │ --│ 71128.45│ │
经营活动现金流出 │ --│ 21998.00│ │
经营活动现金净流量 │ 21899.10│ 49130.44│ │
投资活动现金流入 │ --│ --│ │
投资活动现金流出 │ --│ 9900.44│ │
投资活动现金净流量 │ -28929.19│ -9900.44│ │
筹资活动现金流入 │ --│ 121000.00│ │
筹资活动现金流出 │ --│ 102836.78│ │
筹资活动现金净流量 │ -27741.53│ 18163.22│ │
现金及等价物净流量 │ -34771.61│ 57393.22│ │
每股经营活动现金净流量│ 0.284│ 0.638│ │
───────────┴──────┴──────┴──────┴──────
注:每股经营活动现金净流量单位为元` 十四、财务状况` XY纵横财经 XY.COM.CN
────────┬──────┬──────┬──────┬──────
名称\年度 │ 2003年中期│ 2002年末期│ 2001年末期│ 2000年末期
────────┼──────┼──────┼──────┼──────
应收帐款周转率 │ --│ --│ 22.709│ --
存货周转率 │ --│ --│ --│ --
总资产周转率 │ --│ --│ 0.197│ --
流动比率 │ 5.335│ 1.343│ 0.516│ 0.025
速动比率 │ --│ --│ --│ --
主营业务增长率 │ --│ 38.274│ --│ --
税后利润增长率 │ --│ 19.913│ --│ --
净资产增长率 │ --│ --│ 21.608│ --
总资产增长率 │ --│ --│ 19.250│ --
────────┴──────┴──────┴──────┴──────` 十五、公司相关评论` XY纵横财经 XY.COM.CN
[1]中原高速:奔驰在希望的快车道---访中原高速董事长宋春雷
…………中间省略
GetSomeTable
End Sub'你调用getsometable即可,个别的地方需要你自己去完善,
'比如d:\600020.txt你可以做一个参数、比如如果表存在就删除、比如临时文件的删除等等。。
'总之这些都是小事了,你自己处理吧Private Sub GetSomeTable()
'从文本中提取一些表格
Call StartChange("` 十一、资产负债表`", "资产负债表")
Call StartChange("` 十二、损益表`", "损益表")
Call StartChange("` 十三、现金流量表`", "现金流量表")
Call StartChange("` 十四、财务状况`", "财务状况")
End SubPrivate Sub StartChange(strSTable As String, strTTable As String)
'开始提取某个特定表格
Dim strTmp As String
Dim strArray() As String
Dim i As Integer
Dim flag As Boolean
Open "d:\600020.txt" For Input As #1
strTmp = StrConv(InputB(LOF(1), #1), vbUnicode)
Close #1
strArray = Split(strTmp, vbCrLf) '将文件内容存到数组里,一个元素代表文件的一行 For i = 0 To UBound(strArray)
If InStr(strArray(i), strSTable) <> 0 Then
flag = True
i = i + 1
Open "d:\" & strTTable & ".txt" For Output As #1
End If
If flag Then
If Left(strArray(i), 1) <> "─" Then
Print #1, strArray(i)
Else
icount = icount + 1
End If
If icount = 3 Then
Close #1
Call WriteTempSchemia(strTTable & ".txt", "│")
Call TxtToMdb("d:", strTTable & ".txt", "d:\out.mdb", strTTable)
Exit For
End If
End If
Next i
End SubPublic Sub WriteTempSchemia(strFileName As String, strSeparator As String)
'写入格式符号文件
Open "d:\Schema.ini" For Output As #1
Print #1, "[" & strFileName & "]"
Print #1, "Format=Delimited(" & strSeparator & ")"
Close #1
End SubPrivate Sub TxtToMdb(sTxtPath As String, sTxtFileName As String, sAccessFullFileName As String, sAccessTable As String)
'功能:将文本文件导入到Access中的表
'调用:Call TxtToMdb("c:\","test.txt","c:\a.mdb","NewTempTable")
'结果:将c:\test.txt导入到c:\a.mdb中的NewTempTable表中 Dim db As DAO.Database
On Error Resume Next
Set db = DBEngine.CreateDatabase(sAccessFullFileName, dbLangGeneral)
If Err.Number = 3204 Then
Set db = Workspaces(0).OpenDatabase(sAccessFullFileName)
End If
db.Execute "SELECT * into " & sAccessTable & " FROM [Text;HDR=NO;DATABASE=" & sTxtPath & "]." & sTxtFileName
db.Close
Set db = Nothing
End Sub
` 十二、损益表` XY纵横财经 XY.COM.CN
2003年中期 2002年末期 2001年末期 2000年末期
36320.43 68165.91 49297.59 31965.11
24319.85 45363.23 32270.06 15398.09
-41.61 -6.29
576.00
这种情况要怎么处理呢??
我现在在用excel作为临时文件,把文本文件经过一定的格式处理后用excel打开,经过处理得到正确的表格,再转为access数据库。
但是现在又遇到一个问题,我用excel处理后用ActiveWorkbook.SaveAs "1.xls"将它存为一个.xls文件,可是程序总是提示“1.xls文件已被修改,是否保存其修改内容。”此时如果选择“否”,1.xls文件其实已经存在,但是却不能转为access文件(Set db = OpenDatabase(sExcelPath, True, False, "Excel 5.0")),如果选择“是”重新保存的文件则可以直接转为access文件,这是什么原因呢??