none
請問可以取得 CSV檔案格式 的文件嗎?? RRS feed

  • 問題

  • 因為 Excel 的容錯能力太強

    能用Excel正常打開並不表示格式正確

     

    所以希望能找到關於 CSV檔案格式 的文件

    如 RFC文件 或 ISO文件

    來做出正確的CSV輸出

    或指出別人CSV輸出錯誤

     

    謝謝!!

     

    --補充:2008-10-16 14:00
    感謝各位的回答

     

    no official specification
    是個令人遺憾的答案

     

    RFC4180
    是個不錯的答案
    但是很明顯的這並不是Microsoft Excel所以依循的標準
    "01"用Excel直接開啟時會被自動轉換成數字 1

     

    難道Microsoft沒有公佈所用的csv格式嗎??
    或者XML會是比較好的解決方案
    --

    2008年10月16日 上午 12:50

解答

  • 你若是在

    http://support.microsoft.com/

    搜尋不到,就是沒有。

     

    微軟很多檔案格式不會對外公開,有說也只是說一些原則性的問題。

     

    如果廠商這麼肯定,你可以跟他要他說的 Microsoft 延伸格式的說明,相信他也是胡謅的。

    2008年10月17日 上午 01:44
  • 我也認為那是廠商亂講的。

    最近有些人講話都號稱有所本,但都是隨便亂講的,連本都沒有 ...

     

    你可以自己寫一個 CSV Validator,把現有的規格放進去,然後把那個檔案丟進去看是不是合乎規範。

    用最高的版本能開啟,不代表用較低的版本一樣可開啟 ...

     

    這裡有個 CSV Reader:

    http://www.codeproject.com/KB/database/CsvReader.aspx

    2008年10月17日 上午 01:51
    版主

所有回覆

  • CSV 沒有什麼特別的格式 ... 它只是每一行資料中,欄位間使用逗號 (comma) 分隔而已。

    所以才叫 CSV (Comma-Separated Value, 由逗號分隔的值) 格式嘛。

     

    2008年10月16日 上午 01:09
    版主
  • RFC-4180 有提到一些 CSV 的定義

    Definition of the CSV Format (http://tools.ietf.org/html/rfc4180#page-2)

    MIME Type Registration of text/csv (http://tools.ietf.org/html/rfc4180#page-4)

    2008年10月16日 上午 01:30
  • 比較特別的應該是這個:

    Code Snippet
    6.  Fields containing line breaks (CRLF), double quotes, and commas
        should be enclosed in double-quotes.  For example:

        "aaa","b CRLF
        bb","ccc" CRLF
        zzz,yyy,xxx

     

    我知道 " 裡面可以放 , ,兩個 "" 代表一個 " ,以前用 Excel 測試換行時,有 CR ,沒想到引號裡面也可以放CRLF ,用 Excel 2007 測,還真的支援引號裡面有 CRLF 哩...

     

    2008年10月16日 上午 02:24
  •  Hlidskijalf 寫信:

    因為 Excel 的容錯能力太強

    能用Excel正常打開並不表示格式正確

     

    所以希望能找到關於 CSV檔案格式 的文件

    如 RFC文件 或 ISO文件

    來做出正確的CSV輸出

    或指出別人CSV輸出錯誤

     

    謝謝!!

     

    你可以參考:

    http://discuss.joelonsoftware.com/default.asp?joel.3.1282.11

     

    下面內容引自前述連結:

     

    IFAIK, there is no "official" spec for CSV files.  Just about every one I've ever been sent has done it slightly differently.

    There are 2 major variations that I've seen:
    1) Simple comma-separated:
    joe,schmoe,28,101 Main St.,,Anywhere,IL,12345,USA

    2) And comma-separated, with character fields in quotes:
    "joe","schmoe",28,"101 Main St.",,"Anywhere","IL",12345,"USA"

    Oh, and for both of these, I've seen them with and without the first line containing the field names:

    "FirstName","LastName","Age","Address1","Address2","USState","USPostal","Country"

    And... I've seen both carriage-return + line-feed (DOS style line separators) and just line-feed (Unix style line separators.

    2008年10月16日 上午 02:31
    版主
  • 要回應請用回覆的方式,不要用改原貼文的方式,這樣別人要看時會很難追蹤時序。

     

    Excel 本身就只是依它本身的特性來讀入 (像是用分號或 TAB 分隔的文字檔也是一樣),沒有用什麼特殊的技巧,"01" 轉換成數字 1 則是它在讀資料的預設行為 (可參看:http://support.microsoft.com/kb/236605/ 的 "發生的原因"),所以 Excel 所輸出的 CSV 是可以給其他系統直接使用,而它也可以匯入符合 CSV 格式 (即逗號分隔資料欄的格式) 的資料。

    2008年10月16日 上午 11:03
    版主
  • 你在 Excel 把 01 當字串輸入,存成 CSV 後,再讓 Excel 讀,也是會變回數字,這是 Excel 自己自動轉換的問題...

    2008年10月16日 下午 12:00
  • 非常抱歉


    我直接說明我所遇到的狀況好了


    合作廠商給我一個CSV檔要我做匯入程式
    他的CSV檔有一些明顯錯誤

    有些字串開頭有雙引號 " 結尾卻沒有
    還有些字串中的雙引號沒有做重複

     

    我的匯入程式讀到的資料整個亂掉
    用Excel 2000開啟也一樣錯誤

    我把這些問題反應上去
    廠商卻跟我說用Excel 2007開啟都很正常
    昨天我用RFC4180跟他說明CSV檔中的錯誤
    他卻跟我說Microsoft有延伸的格式
    他的檔案可以用Excel 2007正常開啟

     

    所以我才想問
    Microsoft有沒有公佈Excel 2007所用的csv格式
    或指出錯誤的功能
    讓我跟他說
    他的檔案使用到Excel的容錯能力
    不是用Excel 2007 [正常]開啟

     

    謝謝!!

    2008年10月17日 上午 12:36
  • 你若是在

    http://support.microsoft.com/

    搜尋不到,就是沒有。

     

    微軟很多檔案格式不會對外公開,有說也只是說一些原則性的問題。

     

    如果廠商這麼肯定,你可以跟他要他說的 Microsoft 延伸格式的說明,相信他也是胡謅的。

    2008年10月17日 上午 01:44
  • 我也認為那是廠商亂講的。

    最近有些人講話都號稱有所本,但都是隨便亂講的,連本都沒有 ...

     

    你可以自己寫一個 CSV Validator,把現有的規格放進去,然後把那個檔案丟進去看是不是合乎規範。

    用最高的版本能開啟,不代表用較低的版本一樣可開啟 ...

     

    這裡有個 CSV Reader:

    http://www.codeproject.com/KB/database/CsvReader.aspx

    2008年10月17日 上午 01:51
    版主