我需要將Excel電子表格中的數據導入到SQL Server 2008中。88列和大約5千行。從電子表格中刪除所有非打印字符
各種隱藏的字符似乎是導致問題。
我沒有Excel的經驗。我讀過CLEAN(A1)將刪除單元格中的所有非打印字符。
如何從整個電子表格中刪除非打印字符?
將CLEAN刪除當我將其導入到SQL Server(這些在電子表格中不可見)時出現在某些數據周圍的雙引號逗號。這些似乎會導致問題。在SQL Server中,您會在字段開頭看到一個雙引號,但數據被截斷等。
我需要將Excel電子表格中的數據導入到SQL Server 2008中。88列和大約5千行。從電子表格中刪除所有非打印字符
各種隱藏的字符似乎是導致問題。
我沒有Excel的經驗。我讀過CLEAN(A1)將刪除單元格中的所有非打印字符。
如何從整個電子表格中刪除非打印字符?
將CLEAN刪除當我將其導入到SQL Server(這些在電子表格中不可見)時出現在某些數據周圍的雙引號逗號。這些似乎會導致問題。在SQL Server中,您會在字段開頭看到一個雙引號,但數據被截斷等。
CLEAN
刪除ASCII碼爲1到32的非打印字符。值得嘗試導入一個小的CLEAN'ed
測試您知道的數據集具有隱藏字符,以查看這些字符是否是問題的根源。
申請CLEAN
到整個工作表最簡單的方法是插入一個額外的工作表到工作簿,進入=CLEAN(Sheet1!A1)
到新的工作表的單元格A1,公式複製下來,並傳達給所有的數據電池將在原片。
另一種選擇是將數據表另存爲PRN,TXT或CSV文件(這也將消除非打印字符),然後嘗試導入新文件或其測試版本,到你的數據庫。毫無疑問,當您使用Save As
而不是Save
保存工作表時,這些文件類型是「另存爲類型」下拉菜單中的選項。最後,如果您仍然遇到問題 - 或者只是想跳到追逐程序 - 下面的過程會去除除「鍵盤」字符(Asc 33-126)之外的所有內容,並將結果寫入另一個工作表。您將需要調整源表單的名稱和範圍以及目標表單的名稱。
Sub CleanHighChars()
Dim srcRng As Range, destRng As Range
Dim strArray As Variant
Dim i As Long, j As Long, k As Long
Dim numRows As Long, numCols As Long
Dim ascNum As Long
Dim str As String, newStr As String, char As String
' // Source sheet and range
Set srcRng = Worksheets("Sheet1").Range("A1:A100")
numRows = srcRng.Rows.Count
numCols = srcRng.Columns.Count
' // Destination sheet
With Worksheets("Sheet2")
Set destRng = .Range(.Cells(1, 1), .Cells(numRows, numCols))
End With
strArray = srcRng
For i = 1 To numRows
For j = 1 To numCols
str = strArray(i, j)
For k = 1 To Len(str)
char = Mid(str, k, 1)
ascNum = Asc(char)
If ascNum > 32 And ascNum < 127 Then
newStr = newStr & char
End If
Next k
strArray(i, j) = newStr
newStr = vbNullString
Next j
Next i
destRng = strArray
End Sub
尼斯腳本。這也刪除了所有空間 - 我想保留它們,所以我將'32'更改爲'31'(以防其他人也需要這樣做)。 –
一些谷歌電子表格信息,因爲它是相關的:清潔功能也適用於谷歌電子表格。 VB函數需要轉換爲JavaScript,我認爲它可以與谷歌腳本編輯器一起工作。 Google自定義腳本鏈接:https://developers.google.com/apps-script/guides/sheets/functions – Danny