macros仅导出第一行

我写了一个macros的CSV优于超过65 k行导入。 我从c#中通过button单击调用macros。在macros我写代码逐行阅读文本文件并添加到coloumn。 最后,我select整个coloumn出口到Excel使用启用“文字到coloumns”由逗号分隔。

问题是,它仅导出第一行。

请帮助我。

Sub Read(FileName As String) 'Dimension Variables Dim ResultStr As String 'Dim FileName As String Dim FileNum As Integer Dim Counter As Double 'Ask User for File's Name 'FileName = InputBox("Please enter the Text File's name, eg test.txt") 'Check for no entry If FileName = "" Then End 'Get Next Available File Handle Number FileNum = FreeFile() 'Open Text File For Input Open FileName For Input As #FileNum 'Turn Screen Updating Off Application.ScreenUpdating = False 'Create A New WorkBook With One Worksheet In It Workbooks.Add template:=xlWorksheet 'Set The Counter to 1 Counter = 1 'Loop Until the End Of File Is Reached Do While Seek(FileNum) <= LOF(FileNum) 'Display Importing Row Number On Status Bar Application.StatusBar = "Importing Row " & _ Counter & " of text file " & FileName 'Store One Line Of Text From File To Variable Line Input #FileNum, ResultStr 'Store Variable Data Into Active Cell If Left(ResultStr, 1) = "=" Then ActiveCell.Value = "'" & ResultStr Else ActiveCell.Value = ResultStr End If 'For xl97 and later change 16384 to 65536 If ActiveCell.Row = 65536 Then ActiveWorkbook.ActiveSheet.Columns(1).Select Selection.TextToColumns DataType:=xlDelimited, _ ConsecutiveDelimiter:=True, Space:=False, Comma:=True 'If On The Last Row Then Add A New Sheet ActiveWorkbook.Sheets.Add Else 'If Not The Last Row Then Go One Cell Down ActiveCell.Offset(1, 0).Select End If 'Increment the Counter By 1 Counter = Counter + 1 'Start Again At Top Of 'Do While' Statement Loop 'Close The Open Text File Close ActiveWorkbook.ActiveSheet.Columns(1).Select Selection.TextToColumns DataType:=xlDelimited, _ ConsecutiveDelimiter:=True, Space:=False, Comma:=True 'Remove Message From Status Bar Application.StatusBar = False End Sub 

C尖锐的button点击事件,

 private void button1_Click(object sender, EventArgs e) { file_Writer = new StreamWriter(@"c:\tstf.csv",true); //file_Writer.Close(); //first row for (int i = 0; i < 8; i++) { file_Writer.Write("A,"); } file_Writer.Write("\n"); // second row for (int i = 0; i < 8; i++) { file_Writer.Write("B,"); } file_Writer.Close(); Thread.Sleep(1000); object oMissing = System.Reflection.Missing.Value; Excel.ApplicationClass oExcel = new Excel.ApplicationClass(); oExcel.Visible = true; Excel.Workbooks oBooks = oExcel.Workbooks; Excel._Workbook oBook = null; oBook = oBooks.Open("F:\\read.xls", oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing); // Run the macros. //RunMacro(oExcel, new Object[] { "DoKbTest" }); RunMacro(oExcel, new Object[] { "siva1", @"c:\tstf.csv" }); // Quit Excel and clean up. oBook.Close(false, oMissing, oMissing); System.Runtime.InteropServices.Marshal.ReleaseComObject(oBook); oBook = null; System.Runtime.InteropServices.Marshal.ReleaseComObject(oBooks); oBooks = null; oExcel.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel); oExcel = null; GC.Collect(); } 

无论您的Do While条件如您所期望的那样工作不正常。 尝试:

 Do until Eof(FileNum) .... Loop 

和/或问题是由于你没有正确closures你的输出文件。 尝试:
Close Filenum

我发现问题的原因。 这是由于回车“\ n”。 我只在行尾添加“\ r \ n”而不是“\ n”。

 file_Writer.Write("\r\n");