我刚刚发现很多字符编码都有用于分隔不同信息的非打印字符例如,ASCII 字符 31 是“单位分隔符”。似乎如果我可以使用这些字符之一作为“逗号/字符分隔值”(CSV)中的分隔符,我就可以避免在文本中可能出现的值转义问题,例如逗号。
是否可以让 MS Excel (2007) 使用“单位分隔符”而不是逗号?如果可以,我该怎么做?
编辑:
我如何输入不可打印的字符?如果我尝试在字符映射表中搜索 Unicode“001F”,我会看到一个高亮显示的空白框和“无可用字符”消息,如下所示:
我不想安装一个特殊的程序来生成不可打印的字符,但如果必须的话我可以这样做。
答案1
快速测试验证@bobSmith1432 有一个可行的解决方案。
我使用 Notepad++ 生成 ASCII 字符 31 并将其复制粘贴到字段中List separator:
。
在 Windows 7 中,转到Control Panel
并选择Region and Language
。在Format
选项卡上单击Additional settings...
按钮。这将打开窗口。在这里,通过从其他来源粘贴,将字段Customize Format
中的逗号更改为 ASCII 字符 31。List separator:
将电子表格保存为 CSV 后,您可能应该立即将其改回逗号。
编辑:作为 Notepad++ 的替代方案,您可以使用常规的旧记事本。打开数字锁,打开记事本,按住 键Alt并按下031数字键盘。然后松开Alt键。按下CtrlA,然后CtrlC选择非打印字符并复制。然后您可以将字符粘贴到窗口中Customize Format
。
答案2
我刚刚想到了另一种方法。在要导出的电子表格中创建一个额外的工作表。在A1
新工作表中,输入以下公式:
=CONCATENATE(Sheet1!A1,CHAR(31),Sheet1!B1,CHAR(31),Sheet1!C1)
更改Sheet1
为要导出为 CSV 的工作表的名称。对其他列重复此模式。上述公式抓取列A
、B
和C
。对于D
,也使用以下内容:
=CONCATENATE(Sheet1!A1,CHAR(31),Sheet1!B1,CHAR(31),Sheet1!C1,CHAR(31),Sheet1!D1)
希望您能从中看出规律。将此单元格向下复制,复制的行数不限。CHAR(31)
插入所需的 ASCII 字符。
然后,另存为 CSV,并仅导出此新工作表。由于您只有一列,因此不会添加逗号或其他分隔符。
答案3
更简单:
在记事本中打开文件。选择分隔符。按 ctrl-C 复制到剪贴板。现在在 Excel 中打开文件。选择“我的文件有分隔符”。单击下一步。将分隔符粘贴到提示的位置。