Excel通过PL/SQL导入Oracle,多列数据合并在一起,无法识别

今天遇到的问题记录一下,excel数据另存为文本文档,在PL/SQL中通过text import导入数据时,无法识别txt中的多列数据,将所有数据合并到了一列。

问题原因:excel的数据中含有看不见的特殊符号,如回车等;

解决办法:使用clean方法清除所有看不见的特殊符号;

附:全局执行CLEAN方法的宏

Sub 全局CLEAN()

Application.ScreenUpdating = False

Dim arr, i, j, m, n, sh As Worksheet
For Each sh In Worksheets
    '一旦遇到空行/列,后面的数据就取不到
    arr = sh.[a1].CurrentRegion
    '直接指定行列,包含空行空列,如sh.range("A120:G"&range("A1").end(3).row)代表A-G列,1-120行
    ' arr = sh.range("A1:c"&range("A1").end(3).row)
    m = UBound(arr)
    n = UBound(arr, 2)
    For i = 1 To m
        For j = 1 To n
            arr(i, j) = Application.Clean(arr(i, j))
        Next
    Next
    sh.[a1].Resize(m, n) = arr
    Set arr = Nothing
Next

Application.ScreenUpdating = True

MsgBox "当前工作簿下的全部工作表已经CLEAN完毕!", vbInformation, "提示"

End Sub
 

Sub 指定sheetCLEAN()

Application.ScreenUpdating = False

Dim arr, i, j, m, n, sh As Worksheet
For Each sh In Worksheets
   '一旦遇到空行/列,后面的数据就取不到
   arr = sh.[a1].CurrentRegion
   '直接指定行列,包含空行空列,如sh.range("A120:G"&range("A1").end(3).row)代表A-G列,1-120行
   ' arr = sh.range("A1:c"&range("A1").end(3).row)

'只对sheet2页进行操作
   If (sh.Name = "Sheet2") Then
        m = UBound(arr)
        n = UBound(arr, 2)
        For i = 1 To m
           For j = 1 To n

              '这一句会报错,注释掉
              'arr(i, j) = Application.Clean(arr(i, j))
           Next
        Next
        sh.[a1].Resize(m, n) = arr
        Set arr = Nothing
   End If
   
Next

Application.ScreenUpdating = True

MsgBox "当前工作簿下的全部工作表已经CLEAN完毕!", vbInformation, "提示"

End Sub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值