用一個(gè)streamreader和streamwriter即可
為福鼎等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及福鼎網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、福鼎網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
Using?sr2?As?New?StreamWriter("2.csv",?False,?Text.Encoding.Default)?'要寫入的文件
Using?sr1?As?New?StreamReader("1.csv",?Text.Encoding.Default)?'要讀取的文件
While?Not?sr1.EndOfStream?'EndOfStream=True表示讀取結(jié)束了
'讀取
Dim?lineread?As?String?=?""?'等下要讀的行
Dim?linewrite?As?String?=?""?'等下要寫入的行
Dim?data?As?String()?'每個(gè)數(shù)據(jù)的數(shù)組
lineread?=?sr1.ReadLine?'讀一行并把流的位置往后調(diào)一行
'你現(xiàn)在可以用If判斷這一行要不要?jiǎng)h除。如果要的話,用Else直接跳過下面的語句即可。
data?=?lineread.Split(",".ToCharArray,?StringSplitOptions.RemoveEmptyEntries)?'讀取一行,用逗號(hào)分隔后存在數(shù)組里
'下面對(duì)讀取到的數(shù)據(jù)進(jìn)行處理,你可以自己處理它
For?Each?item?As?String?In?data
linewrite?=?item??","?'csv是以逗號(hào)分隔的,我們寫進(jìn)去時(shí)也要記得加逗號(hào)
Next
'寫入
If?linewrite.EndsWith(",")?Then?'去掉行最后一個(gè)逗號(hào)。
'如果之前讀到一個(gè)空行,這里就不會(huì)執(zhí)行。你想想為什么
sr2.WriteLine(linewrite.Remove(linewrite.Length?-?1,?1))
End?If
'如果你之前用If判斷了行要不要?jiǎng)h除,那么End?If就應(yīng)該加在這里。
End?While
sr1.Close()
End?Using
sr2.Flush()
sr2.Close()
End?Using
csv文件可以當(dāng)做文本文件來處理!
主要處理代碼如下:
Dim t As String, b() As stirng, s(10) As String, cj(10) As Single
t = "" '這里是你讀取的CSV文件內(nèi)容
b() = Split(t, vbCrLf)
For j = 0 To 9
s(j) = b(j) '這個(gè)就是每一行的數(shù)據(jù)了
c() = Split(s(j), ",")
cj(j) = Val(c(1)) '這個(gè)就是每一行的成績數(shù)據(jù)了
Next
'然后進(jìn)行排序和顯示處理
給你一段VB.net讀取csv文件的代碼把。
Imports?System.IO
Imports?System.Collections.Generic
Module?Module1
Public?CSV數(shù)據(jù)?As?List(Of?List(Of?String))
'''?summary
'''?從指定路徑的文件讀取內(nèi)容,并分析出其中每行含有分隔符的數(shù)據(jù),存到CSV數(shù)據(jù)中。
'''?para調(diào)用的時(shí)候使用CSV數(shù)據(jù)(5)(0)表示第6條記錄的第1個(gè)數(shù)據(jù)/para
'''?/summary
'''?param?name="文件路徑"必需。一個(gè)[String]表達(dá)式。要讀取的文件路徑。/param
'''?returns返回是否讀取成功/returns
'''?remarks/remarks
Public?Function?讀取(ByVal?文件路徑?As?String)?As?Boolean
Dim?文件讀取器?As?StreamReader?=?New?StreamReader(文件路徑)
Dim?語句?As?String
Dim?t成功?As?Boolean?=?True
Dim?分隔符?As?Char?=?";"
CSV數(shù)據(jù)?=?New?List(Of?List(Of?String))
While?Not?文件讀取器.EndOfStream
Try
語句?=?文件讀取器.ReadLine
'分析語句后判斷類型
If?語句.Contains(分隔符)?Then
Dim?array?=?語句.Split(分隔符)
If?array?IsNot?Nothing?Then
CSV數(shù)據(jù).Add(array.ToList())
End?If
End?If
Catch?ex?As?Exception
t成功?=?False
End?Try
End?While
Return?t成功
End?Function
End?Module
你上面的數(shù)據(jù)執(zhí)行后,將會(huì)保存到一個(gè)List嵌套List的String組中。
自己轉(zhuǎn)化為數(shù)字再進(jìn)行操作把。
Dim?數(shù)字?=?Convert.ToDecimal(CSV數(shù)據(jù)(5)(0))
CSV文件,在EXCEL里可以直接生成與讀取。
可以通過VB.net去操作,打開EXCEL文件,去完成上述操作,而更為簡單的辦法是直接當(dāng)做操作文本文件(TXT文件)就可以,因?yàn)橛糜浭卤拒浖?,打開CSV文可以發(fā)現(xiàn),其實(shí)際上是一個(gè)行內(nèi)數(shù)據(jù)之間用逗號(hào)分隔的格式文件。
下面給出例子:
在窗體上添加兩個(gè)多行文本框,兩個(gè)按鈕,兩個(gè)文本框一個(gè)用來輸入生成CSV文件的數(shù)據(jù),另一個(gè)用來讀取顯示CSV文件的數(shù)據(jù);兩個(gè)按鈕,一個(gè)完成生成CSV文件的代碼,另一個(gè)完成讀取CSV文件的代碼;具體代碼如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'創(chuàng)建(寫入)一個(gè)文本文件
Dim MyStream As New System.IO.FileStream(Application.StartupPath "\Ssk.CSV", System.IO.FileMode.Create)
Dim MyWriter As New System.IO.StreamWriter(MyStream, System.Text.Encoding.Default)
MyWriter.WriteLine(TextBox1.Text)
MyWriter.Flush()
MyWriter.Close()
MyStream.Close()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'讀取一個(gè)文本文件
Dim MyReader As New System.IO.StreamReader(Application.StartupPath "\Ssk.CSV", System.Text.Encoding.UTF8)
TextBox2.Text = MyReader.ReadToEnd()
MyReader.Close()
End Sub
注意:在輸入文本框里,同一行數(shù)據(jù)的數(shù)據(jù)之間用逗號(hào)(西文逗號(hào))分隔。
你是怎么讀寫的呢?下面是簡單的讀寫
Dim str As String = (My.Computer.FileSystem.ReadAllText("C:\QD51-R24_A.csv")) '讀
My.Computer.FileSystem.WriteAllText("C:\1.csv", str, True) '寫