将数据导出到 csv 文件

Hui Liu-MSFT 40,271 信誉分 Microsoft 供应商
2024-04-01T07:57:16.3866667+00:00

我想将数据从数据表导出到 csv 文件。

当您STU_NAMES学生姓名分组时,CSV 文件中显示的列数将从 0 到最后一个值的数字形式出现。 当分组STU_TEST时,每一行都在 csv 文件中 标注 数据根据列中的值和数字水平显示每个学生的数据 91705-tacsv1.png

91751-stud3.png

结果

91732-tacsv2.png

我用于导出文本文件数据的方法。 数据是原样的,而不是垂直的。

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

VB
VB
Microsoft 开发的一种面向对象的编程语言,其在 .NET Framework 上实现。 以前称为 Visual Basic .NET。
54 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Jiale Xue - MSFT 33,686 信誉分 Microsoft 供应商
    2024-04-01T08:11:17.9733333+00:00

    您可以参考以下方法生成表格:

        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: 91909-2.png


    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。

    注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助