CSV文件,在EXCEL里可以直接生成與讀取。
創(chuàng)新互聯(lián)公司主營郾城網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App定制開發(fā),郾城h5微信平臺小程序開發(fā)搭建,郾城網(wǎng)站營銷推廣歡迎郾城等地區(qū)企業(yè)咨詢
可以通過VB.net去操作,打開EXCEL文件,去完成上述操作,而更為簡單的辦法是直接當(dāng)做操作文本文件(TXT文件)就可以,因為用記事本軟件,打開CSV文可以發(fā)現(xiàn),其實際上是一個行內(nèi)數(shù)據(jù)之間用逗號分隔的格式文件。
下面給出例子:
在窗體上添加兩個多行文本框,兩個按鈕,兩個文本框一個用來輸入生成CSV文件的數(shù)據(jù),另一個用來讀取顯示CSV文件的數(shù)據(jù);兩個按鈕,一個完成生成CSV文件的代碼,另一個完成讀取CSV文件的代碼;具體代碼如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'創(chuàng)建(寫入)一個文本文件
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
'讀取一個文本文件
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ù)之間用逗號(西文逗號)分隔。
首先,在填充后的datatable處設(shè)置一個斷點,查看datatable中的數(shù)據(jù)是什么樣的,判斷是讀取出了問題還是綁定到datagridview時候出的問題。然后補充問題告訴我datatable中的數(shù)據(jù)是什么樣的
用一個streamreader和streamwriter即可
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()?'每個數(shù)據(jù)的數(shù)組
lineread?=?sr1.ReadLine?'讀一行并把流的位置往后調(diào)一行
'你現(xiàn)在可以用If判斷這一行要不要刪除。如果要的話,用Else直接跳過下面的語句即可。
data?=?lineread.Split(",".ToCharArray,?StringSplitOptions.RemoveEmptyEntries)?'讀取一行,用逗號分隔后存在數(shù)組里
'下面對讀取到的數(shù)據(jù)進行處理,你可以自己處理它
For?Each?item?As?String?In?data
linewrite?=?item??","?'csv是以逗號分隔的,我們寫進去時也要記得加逗號
Next
'寫入
If?linewrite.EndsWith(",")?Then?'去掉行最后一個逗號。
'如果之前讀到一個空行,這里就不會執(zhí)行。你想想為什么
sr2.WriteLine(linewrite.Remove(linewrite.Length?-?1,?1))
End?If
'如果你之前用If判斷了行要不要刪除,那么End?If就應(yīng)該加在這里。
End?While
sr1.Close()
End?Using
sr2.Flush()
sr2.Close()
End?Using