【问题标题】:Adding alt+enter (excel linefeed) in tsql code在sql代码中添加alt+enter(excel换行)
【发布时间】:2012-02-12 09:48:27
【问题描述】:

我正在尝试创建一个脚本以从数据库返回连续行,并使用 c# 用文本填充一个 excel 文件。

我已经管理了所有事情,只是找不到换行的解决方案......

尝试过 char(10)+char(13) 等等。

我知道在 excel 中如果想添加新行,他会显示使用 alt+enter。是否有代码可以添加到我的 tsql 脚本中以获取 excel 文件中的换行符?

谢谢你, 埃雷兹

【问题讨论】:

    标签: asp.net sql-server-2005 tsql excel


    【解决方案1】:

    我遇到了同样的问题,但我的问题是从 SQL Server Management Studio 结果窗口复制并粘贴到 Excel 文件中。这是同一个问题,只是更直接。

    对于那些不了解问题的人,这里有一个重现。在 SSMS 中运行以下命令并将结果复制并粘贴到 Excel 中。将单元格设置为自动换行。

    SELECT 'Hello' + CHAR(10) + 'World'
    

    您会在一个单元格上看到 Hello,在其下方的单元格上看到 World。我们想要看到的是

    Hello
    World
    

    在一个带有换行符的单元格中。

    我的解决方案是将结果用引号括起来。有几种方法可以做到这一点。我发现这个看起来最干净:

    SELECT QUOTENAME('Hello' + CHAR(10) + 'World', '"')
    

    SSMS 结果窗口中的结果是“Hello World”。但是,当粘贴到 Excel 中并设置有换行文本的单元格时,我会得到想要的结果。

    【讨论】:

    • 请注意,QUOTENAME 有一些重要的限制,包括只能处理长度为 128 个字符的字符串。对于较长的字符串,您可以用 CHAR(34) 将字符串括起来,它是双引号字符。 select char(34) + 'Hello' + char(10) + 'World' + char(34)
    【解决方案2】:

    Cr+Lf 实际上是 13+10 而不是 10+13。

    如果这不起作用,单个 char(10) 会。

    【讨论】:

    • 谢谢亚历克斯,但这些都不起作用...试过 char(10)+char(13), char(13)+char(10),char(10),'\n\ r',
      ..... 没有任何效果问题是在 Excel 中,单元格内的换行符是 alt+enter 并且 char(10) 只是换行符 10+13 是在 windows 中输入.....才能工作在 excel 中我需要 alt+enter.... 签入 excel :-) 10x, erez
    • 如果我将带有 AAA{alt+enter}BBB 的单元格复制到记事本中,则换行符为 char(10);如果我将它复制回另一个单元格,我会按预期得到 2 行(range("A1").value="A" & chr(10) & "B" 也可以)你是如何创建 excel 文件的?跨度>
    • IN tsql: declare \@newLineChar as char(2)set \@newLineChar = CHAR(13) + CHAR(10) 然后添加连接文本和换行符 \ 只是为了排除在标志.....不是代码的一部分
    • @Erez - Alex 提供了解决方案:使用单个 LF,即 Char(10)。应该注意的是,您还需要在相关单元格上启用 WrapText 才能看到换行。
    • 谢谢你,thomas,正如我所说,之前尝试过,还有文字换行......但仍然没有用......在我问之前尝试了我知道或在网上的所有东西......问题在于转换为 excel......在其他所有格式中,每个解决方案都可以正常工作......
    【解决方案3】:

    我的问题的解决方案是在 tsql 中使用
    并在 c# 中对其进行解码,因为我正在从 DataSet 创建一个 html 表,然后将 html 表转换为 excel 样式表。

    SQL:

    SELECT br_in.BIText + '<br>'
    

    C#:

    StrReport.Append("<td>" + HttpUtility.HtmlDecode(ds.Tables[k].Rows[i][j].ToString()) + "</td>");
    

    这是唯一对我有用的东西,如果你仔细想想,它甚至是有道理的......

    谢谢你, 埃雷兹

    【讨论】:

      【解决方案4】:

      这是我让它工作的唯一方法

      SQL:选择 '="Hello"&CHAR(10)&"World"'

      在 Excel 中,我还必须为单元格设置换行文本。

      【讨论】:

        【解决方案5】:

        就我而言,它适用于以下情况

        string text = String.Format("\"{0}\"", text);

        通过将您的测试设置为这种格式,它将在 Excel 中创建 alt+Enter。

        【讨论】:

          猜你喜欢
          • 2022-01-17
          • 2014-06-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-01
          相关资源
          最近更新 更多