今天同事问我说excel 中有特殊字符,在widows记事本中显示为小黑方块,在网上找了一下,我个人比较懒还是放到库里去处理一下好了,这个过程中发现了一系列的新问题,下面一一例出与解决,我提倡动用手头比较方便的各种软件
1,查看特殊字符是什么
我用oracle库里的dump函数,看了一个ascii码表为,char(10)
然后把excel 导入到本机刚好安装的sqlserver里处理
2,导入时提示 数据对于所指定缓冲区太大
无论是先建表批定varchar(4000)还是批定text都一样报这个错误,原因excel那个列的值是够长但绝不足500字
网上一查是excel 默认的Jet 引擎 为以前8列的类型决定数据类型
修改注册表
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Jet\\4.0\\Engines\\Excel 把TypeGuessRows值改为0,重启操作系统或结束exporer进程,没有桌面别慌,同时按ctrl+shift+esc调出任务管理器,新建任务 exporer,导入数据可以了
替换特殊字符吧
update tablename set colname =replace( colname,char(10),'')
3,修改时提示replace 的参数 1 的数据类型 ntext 无效。
查看当前字段类型为text类型,replace不可用,要转换后替换
update tablename set colname =replace(cast( colname as varchar(8000),char(10),'')
导出发现还有特殊符,再一想,可能还有换行回车符,再次替换
update tablename set colname =replace(cast( colname as varchar(8000),char(13),'')
再次导出 为excel,发现乱码没了
1,查看特殊字符是什么
我用oracle库里的dump函数,看了一个ascii码表为,char(10)
然后把excel 导入到本机刚好安装的sqlserver里处理
2,导入时提示 数据对于所指定缓冲区太大
无论是先建表批定varchar(4000)还是批定text都一样报这个错误,原因excel那个列的值是够长但绝不足500字
网上一查是excel 默认的Jet 引擎 为以前8列的类型决定数据类型
修改注册表
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Jet\\4.0\\Engines\\Excel 把TypeGuessRows值改为0,重启操作系统或结束exporer进程,没有桌面别慌,同时按ctrl+shift+esc调出任务管理器,新建任务 exporer,导入数据可以了
替换特殊字符吧
update tablename set colname =replace( colname,char(10),'')
3,修改时提示replace 的参数 1 的数据类型 ntext 无效。
查看当前字段类型为text类型,replace不可用,要转换后替换
update tablename set colname =replace(cast( colname as varchar(8000),char(10),'')
导出发现还有特殊符,再一想,可能还有换行回车符,再次替换
update tablename set colname =replace(cast( colname as varchar(8000),char(13),'')
再次导出 为excel,发现乱码没了
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




