将TXT文件发送到Excel

时间:2012-12-20 18:11:35

标签: vb.net

我有以下代码将文本文件提供给Excel工作簿。

    Dim XlApp As Excel.Application = New Excel.Application
    Dim XlWbk As Excel.Workbook = XlApp.Workbooks.Add
    Dim SheetName As String = "Sheet1"
    Dim XlWkst As Excel.Worksheet = FindSheet(XlWbk, SheetName)
    Dim XlRng As Excel.Range = Nothing

    If XlWkst Is Nothing Then
        XlWkst = DirectCast(XlWbk.Sheets.Add(After:=XlWbk.Sheets(XlWbk.Sheets.Count), _
        Count:=1, Type:=Excel.XlSheetType.xlWorksheet), Excel.Worksheet)
    End If

    Dim Lines() As String = File.ReadAllLines("C:\TEMP\FlowgateNNL_Mar2011_base.txt")
    Dim RC(Lines.Length - 1)() As String
    For I As Integer = 0 To Lines.Length - 1
        RC(I) = Lines(I).Split(CChar(vbTab))
    Next

    XlRng = XlWkst.Range("a1")
    XlRng.Value = RC

    XlApp.Visible = True

这种方法似乎是读取和解析CSV文件以便在我的计算机上转储到Excel的最快方法。它在XlRng.Value = RC上窒息。 Excel似乎不喜欢RC。

让Excel接受数据的任何想法?

3 个答案:

答案 0 :(得分:0)

您是将单元格的值设置为包含整个CSV的数组吗?我猜这会引发类型错误。 这可能更符合您的要求。

    Dim XlApp As Excel.Application = New Excel.Application
    Dim XlWbk As Excel.Workbook = XlApp.Workbooks.Add
    Dim SheetName As String = "Sheet1"
    Dim XlWkst As Excel.Worksheet = FindSheet(XlWbk, SheetName)
    Dim XlRng As Excel.Range = Nothing

    If XlWkst Is Nothing Then
        XlWkst = DirectCast(XlWbk.Sheets.Add(After:=XlWbk.Sheets(XlWbk.Sheets.Count), _
        Count:=1, Type:=Excel.XlSheetType.xlWorksheet), Excel.Worksheet)
    End If

    Dim Lines() As String = File.ReadAllLines("C:\TEMP\FlowgateNNL_Mar2011_base.txt")

    For I As Integer = 0 To Lines.Length - 1
        XlRng = XlWkst.Range("a1").Offset(I, 0)
        Dim RC() As String = Lines(I).Split(CChar(vbTab))
        For J As Integer = 0 To RC.Length - 1
            XlRng = XlRng.Offset(0, J)
            XlRng.Value = RC(J)
        Next
    Next

    XlApp.Visible = True

答案 1 :(得分:0)

您是否尝试过直接打开CSV文件,如下所示:

Dim XlApp As Excel.Application = New Excel.Application
Dim XlWbk As Excel.Workbook = XlApp.Workbooks.Open("C:\TEMP\FlowgateNNL_Mar2011_base.txt")
XlApp.Visible = True

答案 2 :(得分:0)

如果您有一个有效的CSV文件,请帮个忙,并使用专门的CSV数据加载器,它可以处理CSV的所有奇怪问题(引号等) 就个人而言,我非常喜欢 http://kbcsv.codeplex.com/ - 它使用简单快捷。

然后只需转储互操作部分并使用 EPPLUS 库将数据写入excel文件 - 它的速度更快,并且简单易懂。 您的工作流程如下所示: 使用KBCSV将数据加载到数据表。 使用EPPLUS的方法" LoadFromDataTable"生成一个新的excel文件并保存。 完成!