VB
Microsoft 开发的一种面向对象的编程语言,其在 .NET Framework 上实现。 以前称为 Visual Basic .NET。
54 个问题
我想将数据从数据表导出到 csv 文件。
当您STU_NAMES学生姓名分组时,CSV 文件中显示的列数将从 0 到最后一个值的数字形式出现。 当分组STU_TEST时,每一行都在 csv 文件中 标注 数据根据列中的值和数字水平显示每个学生的数据
结果
我用于导出文本文件数据的方法。 数据是原样的,而不是垂直的。
Blockquote
Public Sub csvexportd(ByVal dT As DataTable, ByVal filpath As String)
Dim thecsvfile As String = String.Empty
Dim nameHeader0 = dT.Columns(1).ColumnName.ToString
Dim nameHeader1 = dT.Columns(2).ColumnName.ToString
Dim nameHeader2 = dT.Columns(3).ColumnName.ToString
thecsvfile &= String.Join(",", {nameHeader0, nameHeader1, nameHeader2}) & vbNewLine
Dim I As Single = 0
For I = 0 To dT.Rows.Count - 1
If dT Is Nothing Then
Exit For : Exit Sub
End If
'//
Dim nameValue0 = ""
Dim nameValue1 = ""
Dim nameValue2 = ""
'//
nameValue0 = dT.Rows(I).Item(0).ToString()
nameValue1 = dT.Rows(I).Item(1).ToString()
nameValue2 = dT.Rows(I).Item(2).ToString()
'thecsvfile &= String.Join(",", {nameValue0, nameValue1, nameValue2}) & vbNewLine
End If
Next
thecsvfile = thecsvfile.Trim
My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\Excel\" & filpath & now & ".csv", thecsvfile, False)
End Sub
Note:此问题总结整理于: Export data to csv file
您可以参考以下方法生成表格:
Public Function GenerateTable(ByVal sourceTable As DataTable) As DataTable
Dim newTable As DataTable = New DataTable()
newTable.Columns.Add("STU_TEST")
Dim TArr As List(Of String) = New List(Of String)()
For Each row As DataRow In sourceTable.Rows
Dim columnName As String = row.ItemArray(0).ToString()
Dim rowName As String = row.ItemArray(2).ToString()
If Not newTable.Columns.Contains(columnName) Then
newTable.Columns.Add(columnName)
End If
If Not TArr.Contains(rowName) Then
TArr.Add(rowName)
End If
Next
For Each TValue As String In TArr
Dim row As DataRow = newTable.NewRow()
row(0) = TValue
For i As Integer = 1 To newTable.Columns.Count - 1
row(i) = sourceTable.AsEnumerable().Where(Function(x) (x.Field(Of String)("STU_NAME") = newTable.Columns(i).ColumnName) AndAlso (x.Field(Of String)("STU_TEST") = TValue)).Select(Function(x) x.Field(Of String)("STU_RATE")).FirstOrDefault()
Next
newTable.Rows.Add(row)
Next
Return newTable
End Function
我的测试中的代码:
Dim dt As DataTable = New DataTable()
dt.Columns.Add("STU_NAME")
dt.Columns.Add("STU_RATE")
dt.Columns.Add("STU_TEST")
dt.Rows.Add("ALIE", "0", "T1")
dt.Rows.Add("SAIED", "", "T1")
dt.Rows.Add("EBRAHIM", "#", "T1")
dt.Rows.Add("ALIE", "0", "T2")
dt.Rows.Add("SAIED", "NOT", "T2")
dt.Rows.Add("EBRAHIM", "1", "T2")
dt.Rows.Add("SALIM", "NOT", "T2")
dt.Rows.Add("MAHER", "2", "T2")
Dim newTable As DataTable = GenerateTable(dt)
Result:
如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。
注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。