簡體   English   中英

Excel在CSV導出中添加額外的引號

[英]Excel adds extra quotes on CSV export

我最近創建了一個應用程序,它通過CSV將項目添加到數據庫。 添加項目后,我意識到我的很多值都有額外的引號(“),這是不需要的,這搞砸了我的訂單。

問題是,當從Excel導出到CSV時,Excel會為我的所有已經包含引號的值添加額外的引號。 我已經展示了以下差異:

原物品: 電鑽可逆1/2“6.3A

出口項目: “鑽電可逆1/2”“6.3”

注意:CSV導出添加了三(3)個額外引號(“)。兩個末端,一個在原始預期引用之后。

我可以更改設置,還是可以在Excel文件/列上設置格式屬性? 或者我是否必須使用它並在將其添加到數據庫之前刪除后端代碼中的這些引號?

這完全正常。 添加外部引號,因為這是一個字符串。 內部引用加倍以逃避它。 例如,您在SQL查詢中看到的同樣的事情。 使用TextFieldParser類可以自動為您解析此問題並嘗試真正的框架代碼。

這是標准的。

CSV文件中的值應該有引號(否則字段內的逗號和換行符可能會被誤解)。

在一個字段中逃避引用的方法是將它加倍,就像你看到的那樣。

我建議你閱讀一下CSV基本規則

CSV是一種分隔數據格式,其字段/列由逗號字符分隔,記錄/行由換行符終止。 包含特殊字符(逗號,換行符或雙引號)的字段必須用雙引號括起來。 如果一行包含單個條目,即空字符串,則可以用雙引號括起來。 如果字段的值包含雙引號字符,則通過在其旁邊放置另一個雙引號字符來對其進行轉義。 CSV文件格式不需要特定的字符編碼,字節順序或行終止符格式。

(強調我的)

替換所有字符右雙引號按字符左雙引號。 它們看起來相似,Excel會混淆並讓文本保持不變。

此解決方案僅在您的結束輸出為HTML時才有用。 這是javascript解決方案,所以顯然你需要用C#或你正在使用的任何語言重做這個:

base = base.replace(/""/gi, '"');
base = base.replace(/'/gi, ''');

在解析CSV之前應用此選項。

您可以嘗試從Excel導出為TAB分隔文件。 我覺得解析起來比較容易。

另一種方法是使用Unicode字符“DOUBLE PRIME”

http://www.fileformat.info/info/unicode/char/2033/index.htm

在您的Excel數據中。 要從Excel導出為UTF-8或UTF-16 .csv,您必須提供具有適當CharacterSet屬性的schema.ini。 顯然,用於將.csv導入數據庫的工具也必須支持Unicode。

根據DBMS,可以使用更直接的數據傳輸方式(SELECT / INSERT ... INTO ... IN),從而完全消除.csv。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM