当前位置:编程学习 > C#/ASP.NET >>

VB文件处理

各位大侠,有一个文件命名为aa.csv,其中的内容如下:
学号,姓名,数学成绩,语文成绩,英语成绩
21,李四,98,23,12
12,王网,23,12,56
现在要将上面数据处理成如下:
学号,姓,名,成绩总分(数学+语文+英语),名次
21,李,四,133,1
12,王,网,91,2
保存在bb.csv中。请赐教呀,坐等 --------------------编程问答-------------------- 先将每一行数据读取,成绩相加,再排序,姓名再分开就麻烦了,不好判断复姓,为何姓名分开? --------------------编程问答-------------------- csv可以直接通过字符串处理,像楼上说的分行读取就行了,但姓名分开会有点麻烦 --------------------编程问答-------------------- 处理完了写回bb.csv需要自己加上','吗
--------------------编程问答-------------------- 输出时要加上',' --------------------编程问答--------------------

 
    Dim bd As New BindingSource
        bd.DataSource = getDB()
        DataGridView1.DataSource = bd‘绑定数据源
        bd.Sort = "成绩总分 DESC" ’降序
        addnum(DataGridView1.RowCount)
    DataSave(DataGridView1) 

'你再将DataGridView1里的数据生成csv
 Public Function DataSave(ByVal dgv As DataGridView)
        Dim fs As New IO.FileStream("bb.csv", IO.FileMode.Create)
        Dim sw As New IO.StreamWriter(fs, System.Text.Encoding.Unicode)
        Dim title As String = ""
        Dim i As Integer
        For i = 0 To dgv.ColumnCount - 1
            title = dgv.Columns(i).HeaderText
            sw.Write(title)
            If i <> dgv.ColumnCount - 1 Then
                sw.Write(",")
            End If
        Next
        sw.WriteLine("")
        '写内容
        Dim x As Integer
        Dim y As Integer
        For x = 0 To dgv.RowCount - 1
            For y = 0 To dgv.ColumnCount - 1
                If dgv.Rows(x).Cells(y).Value Is DBNull.Value Then
                    sw.Write("")
                Else
                    sw.Write(dgv.Rows(x).Cells(y).Value)
                End If
                If y <> dgv.ColumnCount - 1 Then
                    sw.Write(",")
                End If
            Next
            sw.WriteLine("")
            sw.Flush()
        Next
        fs.Close()
    End Function

 Sub addnum(ByVal rn As Integer)'增加序号,就是排名
        Dim i As Integer
        For i = 1 To rn - 1
            DataGridView1.Rows(i - 1).Cells(3).Value = i
        Next
        DataGridView1.Refresh()
    End Sub
 Public Function getDB() As DataTable‘读取数据放表中
        Dim dt = New DataTable()
        dt.Columns.Add("学号")
        dt.Columns.Add("姓名")
        dt.Columns.Add("成绩总分", GetType(Integer))
        dt.Columns.Add("名次")
        Using r As IO.StreamReader = New IO.StreamReader("test.csv", System.Text.Encoding.Default)
            Dim line As String
            Dim s As String()
            Dim score As Integer
            line = r.ReadLine
            Do While (Not line Is Nothing)
                s = line.Split(",")
                If IsNumeric(s(0)) = True Then
                    score = Convert.ToInt16(s(2)) + Convert.ToInt16(s(3)) + Convert.ToInt16(s(4))
                    dt.Rows.Add(s(0).ToString(), s(1).ToString().ToString(), score)
                End If
                line = r.ReadLine
            Loop
            r.Close()
            r.Dispose()
        End Using
        Return dt
    End Function
--------------------编程问答-------------------- 如果数据写到数据库里,一条select语句就可搞定,我这个方法是笨办法, --------------------编程问答-------------------- 楼上大神,有木有纯VB,不用调用VB.net
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,