我有以下代码将文本文件提供给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接受数据的任何想法?
答案 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文件并保存。 完成!