簡體   English   中英

Excel 將額外的逗號導出為 CSV

[英]Excel Exports Extra Commas to CSV

我有一個通過 Excel 2010 運行的大型宏程序,在將大量數據格式化到另一個表中並將工作簿導出為 CSV 文件后(大量數據我指的是數千行,最多超過 59,000 行)。 最近,我的文件開始以多一行的逗號結尾,如下所示:

data,data,data,data,number,date
data,data,data,data,number,date
,,,,,

我正在使用存儲過程將這些文件導出到 SQL 數據庫,因此確保沒有多余的逗號與程序混淆是必不可少的。 那么,話雖如此,正在發生什么,我該如何預防呢? 我可以提供您認為缺少的任何代碼或信息。

注意:它似乎只發生在至少有幾千行數據的文件上。 導出的一個文件通常有 2,000+,另一個必須有 59,000+ 才能導出表。

EDIT1:這是我正在使用的宏,以防萬一它會有所幫助(Ditto 要求)

Sub exportTable()
Dim varIsOpen As Boolean
Dim varSaveLocation1 As String, varSaveLocation2 As String
varIsOpen = False

If ThisWorkbook.Sheets("ControlSheet").Range("D2").value = "" Then
    varSaveLocation1 = ThisWorkbook.Path & "\CSVREVIEW\"
    varSaveLocation2 = varSaveLocation1 & Year(Now) & Month(Now) & Day(Now) & Hour(Now) & Minute(Now)
Else
    varSaveLocation1 = ThisWorkbook.Sheets("ControlSheet").Range("D2").value
    If Right(varSaveLocation1, 1) <> "\" Then varSaveLocation1 = varSaveLocation1 & "\"
    varSaveLocation2 = varSaveLocation1 & Year(Now) & Month(Now) & Day(Now) & Hour(Now) & Minute(Now)
End If
    For counter = 1 To Workbooks.Count
        If Workbooks(counter).Name = "TableBook.xls" Then varIsOpen = True

        If varIsOpen = True Then Exit For
    Next

    If varIsOpen = False Then GoTo isClosed

Workbooks("TableBook").Activate

Application.DisplayAlerts = False

'Check if TableBook is empty and don't export if so
If Workbooks("TableBook").Sheets("logFile").Range("A1").value = "" Then
    Workbooks("TableBook").Close
    GoTo isClosed
End If

'On Error Resume Next
If Len(Dir(varSaveLocation1, vbDirectory)) = 0 Then
   MkDir varSaveLocation1
End If
If Len(Dir(varSaveLocation2, vbDirectory)) = 0 Then
    MkDir varSaveLocation2
End If
'On Error GoTo 0

ActiveWorkbook.Sheets("test").Activate
ActiveWorkbook.SaveAs varSaveLocation2 + "\test", xlCSV

ActiveWorkbook.Sheets("part").Activate
ActiveWorkbook.SaveAs varSaveLocation2 + "\part", xlCSV

ActiveWorkbook.Sheets("logFile").Activate
ActiveWorkbook.SaveAs varSaveLocation2 + "\logFile", xlCSV

ActiveWorkbook.Sheets("deltaLimits").Activate
ActiveWorkbook.SaveAs varSaveLocation2 + "\deltaLimits", xlCSV

ActiveWorkbook.Close

Application.DisplayAlerts = True

isClosed:
End Sub

點擊Ctrl + End以查看 Excel 認為數據的范圍。 如果超出了您想要導出的范圍,請使用主頁 ► 編輯 ► 清除 ► 全部清除從下方的行和所需數據區域右側的列中擦除所有值和格式,並保存工作簿。 Excel 2010(帶有所有 SP)將調整到 CurrentRegion 並且Ctrl + End現在應將您帶到正確的最后一個單元格

早期版本的 Excel(或不帶所有 SP 的 XL2010)可能需要額外的步驟(請參閱Excel 中不需要的額外空白頁)。

我遇到了一個看起來相同的問題(csv 中的額外逗號),結果我在循環中導出了一個額外的行,而我使用的單元格是空的,因此我只有逗號

我遇到了完全相同的問題。 如果整個工作表都被格式化,即使只是文本類型或文本高度,Excel 甚至會將空單元格檢測為數據。 您可以刪除整個格式化的列/行,如上所述Cœur 或者只是創建一個新工作表而不設置任何格式並復制您的代碼或更改地址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM