1

我有以下代码将文本文件获取到 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 接受数据的任何想法?

4

3 回答 3

1

您正在将单元格的值设置为包含整个 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
于 2012-12-20T18:34:56.807 回答
1

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

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

于 2013-07-08T09:57:10.727 回答
1

您是否尝试直接打开 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
于 2013-07-08T08:15:57.537 回答