c# - 制表符分隔文本复制粘贴到 Excel

标签 c# excel csv

我正在通过 C# Stringbuilder 生成一个文本 block ,其中包含适当的制表符分隔文本(换行符、“\t”等),并在我的 Web 应用程序中的标记内显示该文本。如果我将其复制/粘贴到 Excel,所有文本都会粘贴到电子表格的第一列中。

如果我复制 block 的外层 HTML (Chrome) 或复制/粘贴到 Notepad++,然后粘贴到 Excel,所有数据都会整齐地粘贴到各个单元格中 - 这是这项工作的预期结果。谁能告诉我需要做什么才能从我的应用程序复制文本并将其粘贴到 Excel 中,以便将文本粘贴到各个单元格中(即保持制表符分隔格式)?

最佳答案

不幸的是,似乎需要一个额外的步骤。

Excel(以及许多其他应用程序)中粘贴的默认行为是使用剪贴板内容的原始格式。

从 Web 应用程序/HTML 页面复制将导致剪贴板内容被标记为 HTML。剪贴板内容将具有制表符,但由于 HTML 将制表符呈现为空白(如果有多个制表符,则压缩为单个空白) - 仅使用 control-V 会将制表符转换为空格,并且内容将显示在单个单元格中粘贴到 Excel 中..

您将需要使用“选择性粘贴”选项并选择“Unicode 文本”来保留选项卡。默认情况下无法设置此值:https://answers.microsoft.com/en-us/msoffice/forum/msoffice_excel-mso_windows8-mso_365hp/how-to-change-default-paste-behavior-with-ctrl-v/f58da075-8fd5-4c80-a64b-5e71ec8ad38b?auth=1

复制Chrome的outerHTML首先将剪贴板格式设置为文本,粘贴到Notepad++确实粘贴为文本而不是HTML,然后重新复制将格式设置为文本 - 这就是这些方法起作用的原因。

关于c# - 制表符分隔文本复制粘贴到 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46645125/

相关文章:

text - SSIS文本被截断,状态值为4

postgresql - pgAdmin4 导入文件错误 - 找不到文件

c# - 为什么 List<T>.Sort 方法重新排序等于 IComparable<T> 元素?

c# - 如何将自定义属性添加到 .Net Core 中的角色声明?

c# - 在多个线程上分配工作负载

arrays - Excel VBA - 填充变体数组会增加内存使用量

arrays - 在 Excel VBA 中使用多维数组进行 ReDim Preserve

excel - 文件名通配符的返回值

c# - System.Reflection.TypeAttributes 是带有 FlagsAttribute 的病态枚举类型吗?

mysql - 使用sql函数将csv文件中的数据插入到mysql中