題 如何強制excel引用CSV文件的所有列?


Excel僅在某些字段周圍放置引號,如何強制excel保存帶有每列附近引號的CSV文件?


79
2018-04-13 19:17


起源




答案:


如果您在LibreOffice或OpenOffice中打開XLS文件,然後單擊另存為....並選擇文本CSV,它將生成一個CSV文件,該文件還包含引號作為分隔符。 例如。:   “史密斯”,“皮特”,“加拿大”   “瓊斯”,“瑪麗”,“英格蘭”

只需選中“引用所有文本單元格”框: Export to CSV with LibreOffice

為了引用數字字段,請突出顯示您的單元格範圍,並在保存之前將單元格格式更改為“文本”。


43
2017-09-04 18:18



雖然不是特定問題的答案,但它比嘗試讓我的客戶使用宏更簡單! - Duncanmoo
我厭倦了每天使用這種方法,這就是我在這裡的原因 - vladkras
我認為這是最簡單,最方便的解決方案,因為OpenOffice是一款便攜式軟件。您不必安裝任何東西或編寫任何代碼。 - Scott Chu
最好的答案!! - rajya vardhan
根本不是答案。問題是明確的MS Excel - vladkras


這個頁面也有直接來自馬口的解決方案:

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

如果鏈接降級,則要搜索的主題是:

“在Excel中使用逗號和引號分隔符導出文本文件的過程”和/或“Q291296”

tl; dr:使用他們的宏


42
2018-03-07 10:09



可能值得注意的是宏使用Integer來表示行和列值。如果嘗試導出大於32768行,您將遇到錯誤。例如,將數據類型更改為Long將解決該問題。 - Dan
好點(+1)。看起來他們沒有更新代碼,因為它最初是為Excel版本編寫的,最多只有32768行。 - sahmeepee
我冒昧地用這個宏創建了一個要點,還有幾個修復: gist.github.com/fabriceleal/7803969 - fableal
@fableal偉大的片段!它值得回答。 - xiankai
正如@sahmeepee所提到的那樣,Office 2010仍然會在大量選定的行上溢出。 - access_granted


我發現這個簡單的解決方案

  1. 突出顯示要添加引號的單元格。
  2. 右鍵單擊並轉到:格式化單元格→選項卡:數字→類別:自定義
  3. 將以下內容粘貼到 類型 領域: "''"@"''" (見下面的詳細信息)
  4. 點擊“好的”

你要粘貼的字符串是 "''"@"''" 這是雙引號,單引號,單引號,雙引號,@符號,雙引號,單引號,單引號,雙引號。

根據找到的信息編輯Excel 2010 這裡


15
2017-08-21 16:54



嗯......給了我''ITEM''(兩個單引號)而不是“(一個雙引號)。我剛才做了一個搜索並替換修復它。 - Clay Nichols
格式應該是\“@ \” - manat
如果您正在使用LibreOffice,這個答案實際上是一個完美的答案 - 它完全缺少格式>數字格式菜單中的“文本”選項,儘管他們的文檔堅持選項就在那裡。如果右鍵單擊LibreOffice中的“格式化單元格”,您將獲得一個單元格解釋選項的完整列表 - 而不是下拉列表中顯示的有些無用的6個選項。 - 1owk3y


Powershell似乎正確轉儲。所以像

如果您不知道powershell,請在Windows機器上搜索powershell.exe。

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

希望它可以幫到某人。


7
2018-01-24 23:10



為方便起見,Shift +右鍵單擊保存CSV的文件夾並選擇 在此處打開PowerShell窗口,這簡化了命令 import-csv Myfile.csv | export-csv Myfile_quoted.csv -NoTypeInformation -Encoding UTF8。記得在帶有空格或其他特殊字符的文件名周圍使用單引號。 - Walf


這對我來說是最簡單的:我將電子表格導入Access 2010並將其作為分隔文本文件從那裡導出。給我在我的田地周圍的引號。現在我已經減少了42k行不到一分鐘的時間。


3
2018-05-23 13:56



唯一的缺點是如果字段本身包含雙引號。 - access_granted


我找到了另一個不涉及VBA宏的工作,但它確實需要Notepad ++或類似的基於宏的文本編輯器。

將文件導出為Tab-seperated文本,然後在Notepad ++中打開導出的文件。將“tab”字符的所有實例替換為文本“,”(即字面上雙引號,逗號,雙引號),然後使用另一個宏為雙引號前綴和後綴每行文本。

有點hacky但我發現它比讓VBA宏工作更快。


2
2017-07-09 15:12



如果你想在Notepad ++中這樣做,你最好使用正則表達式搜索和替換,然後你可以在一個地方完成所有3個替換操作(行首,製表符和行尾) - sahmeepee


  1. 高亮顯示要添加引號的單元格。
  2. 右鍵單擊並轉到:Format單元格→選項卡:數字→類別:自定義
  3. 將以下內容粘貼到“類型”字段中:“''”@“''”(請參閱下面的詳細信息)
  4. 點擊“好的”
  5. 使用記事本(或等效文件)打開.csv文件
  6. 用“(雙引號)替換所有''(重複的單引號)
  7. 全部替換 ;
  8. 保存修改後的.csv文件

2
2017-10-21 06:33