读书人

怎么读取txt文件中的逐日数据

发布时间: 2012-01-19 20:57:58 作者: rapoo

如何读取txt文件中的逐日数据?
现有一记录逐日天气数据的文本文件,其格式为:

年份 月份 1日 2日 3日 28日 29日 30日 31日
----------------------------------
1988 1 12 13 15 …… 15 20 21 22
1988 2 15 16 18 …… 14 32744 32744 32744
……
1988 12 12 13 15 …… 15 20 21 22
(1988为年份,1、2、12为月份,后面从12开始共31列数据,记录逐日气温值,其中2月由于只有28天,后三个用32744表示没有值。以上只是列举了1988两个月的示例,实际上数据从1988至后面某一年如2002等。实际文件中没有横线和上面的文字说明这两行,直接从1988开始。)

现在我想通过在面板上添加一个monthcalendar控件,通过该控件选择日期,就可以在文本框中显示该日的数据。请问该如何实现呢?我尝试了一番没有成功

多谢!

[解决办法]
当数据库来读是不是资源占用少一点?下面是个示例,只是顺着思路写的,如果可以,自己优化

Private Function GetTxt(ByVal d As Date) As String
'用ODBC读 Dbq是存放txt文件的文件夹路径
Dim cn As OdbcConnection = New OdbcConnection( "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=c:\;Extensions=asc,csv,tab,txt; ")
Dim cmd As OdbcCommand = New OdbcCommand( "select * from test.txt ", cn) '指定文件名称
Dim dr As OdbcDataReader

Dim s As String
Dim sValue(33) As String
Dim sLines() As String
Dim itm As Integer = 1

Dim yyyy As String = d.Year.ToString
Dim mm As String = d.Month.ToString
Dim dd As String = d.Day.ToString


cmd.CommandType = CommandType.Text
cn.Open()
dr = cmd.ExecuteReader
While dr.Read()
sLines = dr.GetString(0).Split(Chr(32)) '先按空格分组
For i As Integer = 0 To UBound(sLines)
If sLines(i).Trim <> " " Then
sValue(itm) = sLines(i) '读入数据
itm += 1
End If
Next
'判断获取数据 这是根据你txt的示例,得到的结果
If sValue(1) = yyyy And sValue(2) = mm Then
s = sValue(2 + dd)
cn.Close()
Return s
Exit Function
End If
End While
cn.Close()
s = "没有数据 "
Return s
End Function

读书人网 >VB Dotnet

热点推荐