您如何强制Excel引用CSV文件的所有列?


Answers:


44

如果您在LibreOffice或OpenOffice中打开XLS文件,然后另存为...并选择“文本CSV”,它将生成一个CSV文件,该文件还包括引号作为定界符。例如:“史密斯”,“皮特”,“加拿大”,“琼斯”,“玛丽”,“英格兰”

只需选中“引用所有文本单元格”框: 使用LibreOffice导出为CSV

为了也引用数字字段,请突出显示您的单元格范围,然后在保存之前将单元格格式更改为“文本”。


7
尽管不是特定问题的答案,但它比尝试让我的客户使用宏更简单的解决方法!
Duncanmoo

我已经厌倦了每天使用这种方法,这就是为什么我在这里
vladkras

我认为这是最简单,最方便的解决方案,因为OpenOffice是便携式软件。您无需安装任何东西或编写任何代码。
Scott Chu

有史以来最好的答案!
rajya vardhan

20
根本没有答案。现在的问题是明确有关的MS Excel
vladkras

43

此页面还提供直接来自马口的解决方案:

http://support.microsoft.com/kb/291296/en-us

如果链接降级,则要搜索的主题是:

“在Excel中同时导出带有逗号和引号定界符的文本文件的过程”和/或“ Q291296”

tl; dr:使用其宏


10
可能值得注意的是,宏将Integer用于行和列值。如果尝试导出大于32768行,则会遇到错误。例如,将数据类型更改为Long可以解决该问题。

好点(+1)。看来他们没有更新代码,因为该代码最初是为最多32768行的Excel版本编写的。
sahmeepee 2013年

9
随意
寓言

@寓言大片段!它应该得到答案。
xiankai

Office 2010仍然在大量选定行上溢出,就像@sahmeepee提到的那样。
access_granted

18

我找到了这个简单的解决方案:

  1. 突出显示要添加引号的单元格。
  2. 右键单击并转到:设置单元格格式→选项卡:数字→类别:自定义
  3. 将以下内容粘贴到“ 类型”字段中:("''"@"''"请参见下面的详细信息)
  4. 点击“确定”

您要粘贴的字符串"''"@"''"是双引号,单引号,单引号,双引号,@符号,双引号,单引号,单引号,双引号。

根据此处的信息为Excel 2010编辑。


嗯..这给了我'项目“”(两个单引号),而不是“(一个双引号),我只是然后做一个搜索和替换修复它。
克莱尼科尔斯

6
格式应该为\“ @ \”
manat

如果您使用的是LibreOffice,则此答案实际上是一个完美的答案-尽管他们的文档坚持说存在该选项,但它在“格式”>“数字格式”菜单中完全没有“文本”选项。如果在LibreOffice中右键单击“设置单元格格式”,则会为您提供单元格解释选项的完整列表-而不是下拉菜单中显示的有些无用的6个选项。
1owk3y

@manat的答案,但没有大括号:\"@\"
MSC

12

Powershell似乎正确转储。所以像

如果您不知道powershell,请在Windows计算机上搜索powershell.exe。

import-csv C:\Temp\Myfile.csv | export-csv C:\Temp\Myfile_New.csv -NoTypeInformation -Encoding UTF8

希望它可以帮助某人。


为了方便起见,请Shift +右键单击保存CSV的文件夹,然后在此处选择“ 打开PowerShell窗口”,将命令简化为import-csv Myfile.csv | export-csv Myfile_quoted.csv -NoTypeInformation -Encoding UTF8。请记住在文件名前后使用单引号,并使用空格或其他特殊字符。
沃尔夫

4

这对我来说是最简单的:我将电子表格导入到Access 2010中,并从那里导出为带分隔符的文本文件。给我周围的引号。现在我已经下调了,不到42分钟的行就花了不到一分钟的时间。


唯一的缺点是字段本身包含双引号。
ACCESS_GRANTED

3

我发现另一种解决方法不涉及VBA宏,但确实需要Notepad ++或类似的基于宏的文本编辑器。

将文件导出为制表符分隔的文本,然后在Notepad ++中打开导出的文件。将“ tab”字符的所有实例替换为文本“,”(即,双引号,逗号,双引号),然后使用另一个宏在文本的每一行加双引号作为前缀和后缀。

有点骇人听闻,但我发现它比使VBA宏正常工作要快。


1
如果要在Notepad ++中执行此操作,最好使用正则表达式搜索和替换,然后可以在一个位置执行所有3个替换操作(行首,制表符和行尾)
sahmeepee 2015年

3

突出显示要添加引号的单元格。转到“格式”->“单元格”->“自定义”,将以下内容复制/粘贴到“类型”字段中:\“ @ \”单击“确定”。很高兴您没有手动完成全部操作。

来自:http : //www.lenashore.com/2012/04/how-to-add-quotes-to-your-cells-in-excel-automatically/


1
这对于alpha来说效果很好-对于带有数字值的列,您将需要\“#\”。
DropHit

在\“ @ \”和\“#\”之间有效。但是,我仍然必须在Notepad ++中编辑数字列的标题,然后将所有的“”“替换为”。真痛苦
加里

还没有尝试过..但是如果您创建的是csv,则不能仅将列更改为文本并使用\“ @ \”
Steve Coleman

2
  1. 突出显示要添加引号的单元格。
  2. 右键单击并转到:设置单元格格式→选项卡:数字→类别:自定义
  3. 将以下内容粘贴到“类型”字段中:("''"@"''"请参见下面的详细信息)
  4. 点击“确定”
  5. 用记事本打开.csv文件(或等效文件)
  6. 将所有' '(重复的单​​引号)替换为"(双引号)
  7. 全部替换 ;
  8. 保存修改后的.csv文件

1

如果您使用Notepad ++在每行的开头添加引号,只需打开导出的csv文件,将光标放在第一行第一列,然后单击菜单“ 编辑/列编辑器...”,在“ 要插入文本 ” 字段中,输入,那么每行的开头都会有一个引号,然后您可以使用正则表达式来搜索/替换所有标签。


0

对于Windows用户

  1. “另存为” Excel文件为CSV
  2. 使用Mircrosoft Works Spreadsheet打开保存的文件
  3. 将电子表格“另存为”为CSV
  4. 现在,所有非数字字段周围都带有“

请注意,这与向前和向后的键盘报价不同。
因此,如果使用CSV加载到Mysql表中,请将其剪切并粘贴到ENCLOSED参数中,否则您将不知道为什么收到消息#1083 - Field separator argument is not what is expected


3
Mircrosoft Works <-?您确定吗?
nixda

0

我使用以下方法在Excel中使用三列,并在第四列中构建字符串。

=CHAR(34)&A2&CHAR(34)&","&CHAR(34)&B2&CHAR(34)&","&CHAR(34)&C2&CHAR(34)&""

我的"''"@"''"方法问题是数据的第二列是一个数字,该"''"@"''"方法对数字没有任何作用。有时第二列为空白,但我需要确保它已在最终文本文件中表示。


0

如果您具有MS访问权限(我具有2007年版),则以另一种方式导入文件,然后将其导出为文本文件。然后将.txt更改为.csv。请注意,所有数字字段都不会在其周围加上双引号,因此,如果您也需要在数字周围加上双引号,则在Access中将字段从数字字段更改为文本字段。


0

只能使用Excel 2016和记事本来导出逗号分隔和带引号的字符串,使用数据副本,公式,导出,文件属性更改,记事本中的替换,保存导出的文件并清除。每个步骤都很简单。详细:

  1. 将要导出的列复制到新的中间工作表中,以保留原始内容并作为备份,然后将要删除的新工作表保留下来,以使电子表格保持原样。

  2. 将其他未出现的字符放在带有公式的列A的字符串的每个末端说“#”或“ ;-)” =concat("#",trim(A1),"#"),将公式放在另一列的所有行上。

    • 相邻的列可以同时完成,但不要引用数字以避免将它们作为字符串读入。
    • 修剪避免了任何可能引发不熟练出口行为的尾随空格。
    • 字符串不应包含可能干扰导入的“”。
  3. 使用'123'方法将新列复制回A ...,以便不携带公式。

  4. 将工作表导出为CSV文件,以在包含数字的字段之间放入逗号。

  5. 更改file.csv属性,以便可以使用记事本打开它。

  6. 使用记事本将任意字符替换为“”。

  7. 尽管使用“作为任意字符似乎是明智的,但必须将其放在不同的单元格中,例如'$ A $ 50',然后在导出中显示的是”“”“”,显然是另一个不便的触发器。

  8. 在记事本中,应保存文件,成为要导入的* .txt文件,并删除中间的* .csv。

  9. 完成额外电子表格工作的清理。

也许有一天,Access导出工具可以嵌入到Excel中。在那些使用剪切和粘贴的程序中,更通用的方法是使粘贴选项包括解释输出结构和提供定界符的多种方法。


0

迈克尔2014年8月21日的回答确实很有帮助。但是,我必须执行另外一两个步骤:

  1. 用记事本打开.csv文件(或等效文件)
  2. 用“(双引号)替换所有”(重复的单​​引号)
  3. 全部替换 ; (在Excel的德语版本中用作定界符),
  4. 保存修改后的.csv文件

没有关于降票的解释?该课程的水平,但是其他人应该如何学习?唐沃特先生,可能会认为这很明显是怎么回事,但对于所有人而言,这可能并不明显。我们正在尝试在这里建立社区,您却无济于事。
Mawg

-1

这是我的食谱。我讨厌这样做,但是我没有更好的办法。就我而言,我没有得到任何领域的报价。我还需要使用UTF-8编码和; 而不是制表符,所以这就是我结束的工作。

注意:由于将双引号括在单引号中的灵活性,等等,我特意使用了“键盘格式”来表示击键以及文字字符和字符串。

  1. 在Excel电子表格中的任何其他列之前插入一个新列(单击第一列的标题,整个列被选中,右键单击,选择“插入”)。
  2. 从新列中选择整个空单元格范围(默认情况下处于选中状态)。在公式字段上,插入所需的任何内容:例如,xxx。按CTRL+ enter用相同的值填充整列。
  3. 将文件另存为Unicode文本(* .txt)。
  4. 在记事本++中打开文件。
  5. CTRL+ f打开搜索/替换。
  6. 转到替换选项卡。
  7. 在“搜索模式”中,选择“扩展(\ n,\ r,\ t,\ 0,\ x ...)”。
  8. 在“搜索”字段中,输入xxxtab击键。
  9. 在“替换”字段中,输入"(双引号)。
  10. 按全部替换。
  11. 在“搜索”字段中,输入tab击键。
  12. 在“替换”中,输入";"(双引号,分号,双引号)。
  13. 按全部替换。
  14. 您快完成了。对于最后一个双引号,请\r在“搜索”字段中输入,并"\r"在“替换”中输入(双引号,反斜杠,双引号)。按全部替换。
  15. 只要您不使用中文字符等,就可以将编码更改为UTF-8并安全地保存文件。

-1

我已经多次遇到这个问题。这是我想出的最简单的解决方案。

  1. 将文件另存为Excel
  2. 将Excel导入Access表
  3. 将表格从Access导出到文本文件。

Access将允许您将导出定界符指定为逗号,并使用引号将文本字段限定为引号。在导出向导中,可以在所需的字符串周围指定任何定界符或字符。

您可能需要创建一个Access查询以按特定顺序排列字段,或隐藏Access添加的自动ID字段。

另外...一旦导出为CSV,请勿再次在Excel中打开它。如果要查看结果,请在记事本中将其打开。Excel倾向于混淆csv的数据。...如果我正确地记住,那是用前导零填充的字段。


这似乎重复了user326114的答案中的信息。
fixer1234 '16

-1

以下是使用OpenOffice应用程序获取Excel电子表格并创建每个文本字段均带有引号的文本(csv)文件的方法。

使用OpenOffice打开Excel文件,然后按照以下步骤操作:

文件>另存为

为您要创建的文件提供一个新名称

对于文件类型,选择“测试CSV(.csv)”

打开复选框“编辑过滤器设置”

点击“保存”

选择“保留当前格式”

字段分隔符应为逗号:,

文本定界符应使用引号引起来:

选中“引用所有文本单元格”框

点击“确定”

这对我有用!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.