【发布时间】:2016-02-16 17:28:43
【问题描述】:
我正在做家庭作业,但在尝试研究信息时遇到了绊脚石。我最大的问题是,我可以找到很多关于数据网格或 CSV 文件的信息,但不能同时找到这两者。
我的目标是在我从 CSV 文件(在 buttonclick1 事件上)读取数据网格的第 14 列后,添加并平均该列,然后将该平均值放入标签中。我的第 14 列在字符串中,并且该特定列具有 $#,### 值。
现在,我的 button1 点击事件除了提出一个错误告诉我索引超出范围,它必须是一个非负数并且小于集合的大小之外,什么都不做。
所以,我意识到这对你们中的大多数人来说是一种补救措施,但我完全不知道如何继续。
Public Class frmMain
Dim rowContents As String
Dim cellContents(20) As String
'closes stuff
Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
Me.Close()
End Sub
Private Sub btnImport_Click(sender As Object, e As EventArgs) Handles btnImport.Click
DataGridView1.ColumnHeadersVisible = True
Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser("F:\1TrevorProjects\MedicalCSV\MedicalProviders.csv")
MyReader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
MyReader.SetDelimiters(",")
Dim currentRow As String()
While Not MyReader.EndOfData
Try
currentRow = MyReader.ReadFields()
DataGridView1.Rows.Add(currentRow)
'Dim currentField As String
'For Each currentField In currentRow
'MsgBox(currentField)
'Next
Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
MsgBox("Line" & ex.Message & "is not valid and will be skipped.")
End Try
End While
MyReader.Close()
End Using
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim total As String = 0
For i As Integer = 0 To DataGridView1.RowCount - 1
total += DataGridView1.Rows(i).Cells(14).Value
Next
TextBox1.Text = total
End Sub
End Class
【问题讨论】:
-
问题是 CSV 包含所有字符串数据。我倾向于创建一个带有类型列的 DataTable(即一个数字将存储在 Int32 列中)。向其中添加行,然后将 DataTable 绑定到 DataGridView (==DataGrid ???)。迭代数据表以添加 numbers 很容易。顺便说一句,是有错误还是没有按您的意愿工作?什么问题
-
哦,对不起,我会更新的。 Button1_Click 什么都不做。我真的只是想找到代码创意来取代那个特定的代码。我已将 CSV 编辑为仅在我希望添加在一起的列中包含数字数据并更改了列标题(如果这就是您所指的?)我可以更多地研究将两者绑定在一起。我没有看过或想过这个想法。谢谢!另外,感谢您修复我的格式!
-
您是否在设计器中添加了 DGV 列? (它甚至是 DGV 吗?)“休息一下”是什么意思?有错误吗?
-
我做到了!我有 14 列显示在设计器窗口上,每列都有它们的名称并被冻结(如果重要的话)。呃,是我说程序强迫我打破这个过程。所以是的,一个错误大声笑。我很抱歉在这方面做得不好,而且比其他任何事情都更令人困惑。
-
刚刚更新,但要完整引用:mscorlib.dll 中出现“system.ArgumentOutOfRangeException”类型的未处理异常——附加信息:索引超出范围。必须为非负数且小于集合的大小
标签: vb.net csv visual-studio-2012 datagrid