本例子在窗体上添加一个按钮,一个空的DataGridView控件;
十年专注建站、设计、互联网产品定制制作服务,业务涵盖成都品牌网站建设、商城开发、成都微信小程序、软件系统开发、成都app软件开发公司等。凭借多年丰富的经验,我们会仔细了解每个客户的需求而做出多方面的分析、设计、整合,为客户设计出具风格及创意性的商业解决方案,创新互联公司更提供一系列网站制作和网站推广的服务,以推动各中小企业全面信息数字化,并利用创新技术帮助各行业提升企业形象和运营效率。
在按钮的单击事件里编写代码如下:
'读取CSV文件到DataGridView控件
Dim r As New StreamReader("C:\工作簿1.csv", System.Text.Encoding.Default) '用StreamReader打开文件
Dim MyRows(0) As String
Dim d() As String
Dim i As Integer = -1
Dim j As Integer = 0
Do While r.Peek -1 '是否到文件尾
i = i + 1
ReDim Preserve MyRows(i)
MyRows(i) = r.ReadLine '从打开的文件中读取一行内容
Loop
r.Close() '关闭对象
'获得数据的列数
d = Split(MyRows(1), ",")
'首先在DataGridView控件中添加列
DataGridView1.ColumnCount = UBound(d) + 1
'然后在DataGridView控件中添加行
DataGridView1.Rows.Add(UBound(MyRows))
'在DataGridView控件中添加数据
For i = 0 To UBound(MyRows)
d = Split(MyRows(i), ",")
For j = 0 To UBound(d)
DataGridView1.Item(j, i).Value = d(j)
Next
Next
你都用.net了,这是vb的旧语法,不推荐使用。vb.net是面向对象的,推荐您使用
dim OpF as new io.filestream(OpenFileDialog1.FileName, IO.FileMode.Open)
...
OpF.close
或是
Using OpF as new io.filestream(OpenFileDialog1.FileName, IO.FileMode.Open)
...
End Using
但是你如果执意要用的话,也可以:
FileOpen(1, OpenFileDialog1.FileName, OpenMode.Input)
...
FileClose(1) '这里可以同时关闭多个文件号,文件号之间用,隔开
CSV文件,在EXCEL里可以直接生成与读取。
可以通过VB.net去操作,打开EXCEL文件,去完成上述操作,而更为简单的办法是直接当做操作文本文件(TXT文件)就可以,因为用记事本软件,打开CSV文可以发现,其实际上是一个行内数据之间用逗号分隔的格式文件。
下面给出例子:
在窗体上添加两个多行文本框,两个按钮,两个文本框一个用来输入生成CSV文件的数据,另一个用来读取显示CSV文件的数据;两个按钮,一个完成生成CSV文件的代码,另一个完成读取CSV文件的代码;具体代码如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'创建(写入)一个文本文件
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
注意:在输入文本框里,同一行数据的数据之间用逗号(西文逗号)分隔。
用一个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表示读取结束了
'读取
Dim lineread As String = "" '等下要读的行
Dim linewrite As String = "" '等下要写入的行
Dim data As String() '每个数据的数组
lineread = sr1.ReadLine '读一行并把流的位置往后调一行
'你现在可以用If判断这一行要不要删除。如果要的话,用Else直接跳过下面的语句即可。
data = lineread.Split(",".ToCharArray, StringSplitOptions.RemoveEmptyEntries) '读取一行,用逗号分隔后存在数组里
'下面对读取到的数据进行处理,你可以自己处理它
For Each item As String In data
linewrite = item "," 'csv是以逗号分隔的,我们写进去时也要记得加逗号
Next
'写入
If linewrite.EndsWith(",") Then '去掉行最后一个逗号。
'如果之前读到一个空行,这里就不会执行。你想想为什么
sr2.WriteLine(linewrite.Remove(linewrite.Length - 1, 1))
End If
'如果你之前用If判断了行要不要删除,那么End If就应该加在这里。
End While
sr1.Close()
End Using
sr2.Flush()
sr2.Close()
End Using