我需要将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