【问题标题】:Importing txt files to excel makes linebreaks disappear将txt文件导入excel会使换行符消失
【发布时间】:2010-01-12 19:31:53
【问题描述】:

我正在尝试将文本文件导入 excel (2007)。该文件是从 C# 文本框中导出的,其中包含换行符。虽然当我导入它时(使用 excel 附带的文本导入向导),换行符完全消失了。我宁愿不必编写 VBA 文件并将其放入 excel 文件中运行,而是在将文本框数据转换为 txt 文件之前使用 C# 中的简洁方法更改它。这有可能吗?

【问题讨论】:

  • 我过去遇到过这个挑战,并通过在导入 Excel 之前用唯一字符替换换行符然后在 Excel 中执行全部替换来解决它。如果手动执行,您可以在“替换为”框中输入 alt 代码(Alt-0010 表示换行符)。这能解决您的问题吗?
  • 好吧,用户最好通过向导导入而不使用特殊的 excel 文档。我希望在导入到 excel 文档之前会有一个出色的解决方案,如果 C# 代码可以将字符替换为 Alt-0010。

标签: excel import text-files line-breaks


【解决方案1】:

我想通了。如果您在文本周围加上引号,则任何嵌入的换行符 (ASCII 010) 都将作为嵌入的换行符导入 Excel。换句话说,这些换行不会导致文本跨 Excel 行拆分。

试试看。在 Notepad.exe 中创建两个文件。在第一个通过按 Alt-0010 终止第一行:

测试行 1 以 alt-0010 终止

测试线 2

在第二个中,以 " 开始行并以 " 结束。对于第一行,在 ":

之前插入一个 Alt-0010

“测试行 1 在引用之前以 alt-0010 终止”

“测试线 2”

现在将两者都导入 Excel 并查看差异。

更多信息请参见IETF RFC 4180

【讨论】:

  • 不幸的是,这不适用于 Excel 2013。它使用新行而不是单元格内的换行符导入两个文件。
【解决方案2】:

在 Excel 中,单元格中的换行符被编码为 ascii 代码 10(即 \n)(通过方便地使用宏记录器和检查生成的 VBA 来确定)。我认为新行的“消失”可能是因为您正在 C# 发出 \n\r,因此您可以尝试在输出之前在 C# 代码中将“\r”替换为“”。

【讨论】:

    【解决方案3】:

    感谢您的帮助!我尝试以 \" 开始文本并以 \" 结束,但是当我使用 excel 时,我将每一行放在一个单独的单元格中,我希望的计划是将所有文本放在一个 excel 单元格中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-16
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多