如何将逗号分隔的数据导出到 excel sheet,但每一行都是新的 excel sheet

How to export comma delimited data to excel sheet, but each row is a new excel sheet

我有一个逗号分隔的文本文件,如下所示

RLGAcct#,PAYMENT_AMOUNT,TRANSACTION_DATE,CONSUMER_NAME,CONSUMER_ADD_STREET,CONSUMER_ADD_CSZ,CONSUMER_PHONE,CONSUMER_EMAIL,LAST_FOUR
ZTEST01,50.00,11/15/2018,ROBERT R SMITH,12345 SOME STREET,60046,,adam@adamparks.com,2224
ZTEST02,100.00,11/15/2018,ROBERT JONES,5215 OLD ORCHARD RD,60077,,adam@adamparks.com,2223
ZTEST03,75.00,11/15/2018,JAMES B MCDONALD,4522 N CENTRAL PARK AVE APT 2,60625,,adam@adamparks.com,2222
ZTEST04,80.00,11/15/2018,JOHN Q DOE,919 W 33RD PL 2ND FL,60608,,adam@adamparks.com,2221
ZTEST05,60.00,11/15/2018,SAMANTHAN STEVENSON,123 MAIN ST,60610,,adam@adamparks.com,2220

我需要将其导出到 excel,以便将逗号之间的每个值插入到 excel

中的列中

所以

ZTEST01 is in A1, 
50.00 is in B1
11/15/2018 in C1 ...

问题是我需要将每一行插入到新创建的 excel 工作表中。

我的代码如下:

 Dim xlApp As New Excel.Application
    Dim xlWorkbook As Excel.Workbook
    Dim xlWorksheet As Excel.Worksheet

    Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork

        'xlWorkbook = xlApp.workboos.Add() using this later once i have the parsing figured out

Dim columns As New List(Of String)
        Dim ccPayment = "C:\Users\XBorja.RESURGENCE\Downloads\Payments_Credit.txt"

        Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser(ccPayment)

            MyReader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
            MyReader.Delimiters = New String() {","}
            Dim currentRow As String()
            'Loop through all of the fields in the file.  
            'If any lines are corrupt, report an error and continue parsing.  
            While Not MyReader.EndOfData
                Try
                    currentRow = MyReader.ReadFields()
                    ' Include code here to handle the row. 
                    For Each r In currentRow


                        columns.Add(r)
                        C

                    Next r



                Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
                    MsgBox("Line " & ex.Message & " is invalid.  Skipping")
                End Try

            End While

            'Dim index0 = columns(0)
            'Dim index1 = columns(1)
            'Dim index2 = columns(3)
            'Dim index3 = columns(3)
            'Dim index4 = columns(4)
            'Dim index5 = columns(5)
            'Dim index6 = columns(6)
            'Dim index7 = columns(7)
            'Dim index8 = columns(8)

            'Console.WriteLine(index0 & index1 & index2 & index3 & index4 & index5 & index6 & index7 & index8)


        End Using

        For Each r In columns
            Console.WriteLine(r)
        Next

end sub

如您所见,我正在尝试查看是否可以为这些索引,以便我可以将每个等同于 excel 中的一个单元格。

另一个问题是这个文本文件每天都在变化。列始终设置(9 列),但行每天根据我们获得的交易数量动态变化。

我建议使用可通过 NuGet 获得的 EPPlus 包。它消除了使用 Excel 的 COM 挑战,并通过读取和写入 XLSX 电子表格文件来工作。

以下示例可满足您的要求:

Private Sub btnWhosebugQuestion_Click(sender As Object, e As EventArgs) Handles btnWhosebugQuestion.Click
    Dim ccPayment As String = "C:\temp\so.csv"

    Using pkg As New ExcelPackage()
        Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser(ccPayment)
            MyReader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
            MyReader.Delimiters = New String() {","}
            Dim sheetCount As Integer
            While Not MyReader.EndOfData
                sheetCount += 1
                Dim newSheet As ExcelWorksheet = pkg.Workbook.Worksheets.Add($"Sheet{sheetCount}")
                Try
                    Dim currentRow As String() = MyReader.ReadFields()
                    Dim columnCount As Integer = 0
                    For Each r In currentRow
                        columnCount += 1
                        newSheet.Cells(1, columnCount).Value = r
                    Next r
                Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
                    MsgBox("Line " & ex.Message & " is invalid.  Skipping")
                End Try
            End While
        End Using
        Dim fi As New FileInfo("C:\temp\so.xlsx")
        pkg.SaveAs(fi)
    End Using
End Sub