• sql数据库查询结果字段包含换行符导致复制到Excel发生错位问题的解决


    问题描述:
    在工作过程中,有时会遇到这样的问题,写好sql查询语句在数据库中查询数据,看到行数(比如说是1000行),但是把查询结果复制到Excel里面,却发生了行列错位问题,而导致Excel里面的行数是超过1000行的,造成数据行数的不一致。

    问题重现:
    字段值包含char(10)换行符,复制字段值到Excel.

    根源:
    某些行列对应单元格包含了换行符,导致复制到Excel里面发生错位。

    解决方案:
    方案1(推荐):把有问题的字段值,用英文双引号括起来,这样就能把字段值里面的换行符限制在正确的Excel单元格里面。
    方案2:通过脚本把对应的字段值换行符去掉。

    脚本:

    /*
        脚本来源:https://www.cnblogs.com/zhang502219048/p/10989296.html
    */
    create table #t
    (
        Name nvarchar(50),
        Remark nvarchar(50)
    )
    
    --问题重现条件:单元格里面包含换行符
    insert into #t
    values ('A1' + char(10) + 'B1', '行1'), ('A2B2', '行2')
    
    --问题重现结果:把sql查询结果复制到Excel会错位
    select Name, Remark
    from #t
    
    --解决方案1:可以直接在字段加双引号处理,复制到Excel就不会错位,也不会显示多余的双引号。相当于把字段里的换行限制在单元格内
    select '"'+ Name + '"' as Name, Remark
    from #t
    
    --解决方案2:可以把换行符去掉
    select replace(replace(Name, char(13), ''), char(10), '') as Name, Remark
    from #t
    
    drop table #t

    运行结果:

    查询结果复制到Excel的效果:

    后记:
    以上是本人在日常工作中处理数据库查询结果复制到Excel发生错位问题、行数不一致问题所摸索到的解决办法,特此分享一下,希望对遇到同样问题的朋友有所帮助。如果帮助到了你,欢迎给我打赏支持一下哦。
    【转载请注明博文来源:https://www.cnblogs.com/zhang502219048/p/10989296.html

  • 相关阅读:
    http 学习 1-1 chapter1-HTTP概述
    2048 游戏实现原理
    safari 日期对象新建new Date( timeStr ) 参数TimeStr格式
    js
    js 常见弹出框学习
    JS引入CSS文件
    JAVA 遍历文件夹下的所有文件(递归调用和非递归调用)
    java复制文件 转
    Map键值对,一种思路
    写入excel表格数据
  • 原文地址:https://www.cnblogs.com/zhang502219048/p/10989296.html
Copyright © 2020-2023  润新知