none
如何讀取超大CSV? RRS feed

  • 問題

  • 用C#的StreamReader。

    以前我經常讀取2萬多行x1026列的CSV都正常,但最近把檔案擴增到9萬多行x1026列,就只能夠讀出一行而已。

    其實這個9萬多行x1026列的CSV檔用Excel開會跳出尺度過大的警告,要我分割成多個檔案,最後也是只能顯示一行。

    不過連自己寫程式讀取都是這樣,真是暈了~

    請問要怎麼突破這個尺度限制,讓程式正確讀取超大CSV?

    • 已移動 FlyingBread 2016年7月5日 上午 06:16 moved
    2016年7月5日 上午 05:21

解答

  • 如果限制是 Excel 的限制,無解。

    Excel 2007 一張工作表的限制:1048576 列,16384 欄。

    Excel 2003 一張工作表的限制:65536 列,255 欄。

    Ref: https://support.microsoft.com/en-us/kb/120596

    資料量大,請分工作表。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    • 已標示為解答 Kao-Yuan Lin 2016年7月5日 下午 02:00
    2016年7月5日 上午 09:34
    版主

所有回覆

  • 如果限制是 Excel 的限制,無解。

    Excel 2007 一張工作表的限制:1048576 列,16384 欄。

    Excel 2003 一張工作表的限制:65536 列,255 欄。

    Ref: https://support.microsoft.com/en-us/kb/120596

    資料量大,請分工作表。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    • 已標示為解答 Kao-Yuan Lin 2016年7月5日 下午 02:00
    2016年7月5日 上午 09:34
    版主
  • 如果限制是 Excel 的限制,無解。

    Excel 2007 一張工作表的限制:1048576 列,16384 欄。

    Excel 2003 一張工作表的限制:65536 列,255 欄。

    Ref: https://support.microsoft.com/en-us/kb/120596

    資料量大,請分工作表。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    不好意思,發現我打錯了。

    應該是9萬多列x1026行,總之ReadLine()一次為一筆資料,總共9萬多筆資料。

    所以連Execl的限制都沒有超過才對。

    2016年7月5日 上午 10:17
  • 你的 Excel 是哪個版本?

    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2016年7月5日 上午 10:18
    版主
  • 你的 Excel 是哪個版本?

    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2016,下圖是試圖開啟的錯誤訊息。

    不過用C#當作文字檔讀取的話就沒差吧?這樣應該就與版本無關?

    

    2016年7月5日 上午 10:30
  • 如果限制是 Excel 的限制,無解。

    Excel 2007 一張工作表的限制:1048576 列,16384 欄。

    Excel 2003 一張工作表的限制:65536 列,255 欄。

    Ref: https://support.microsoft.com/en-us/kb/120596

    資料量大,請分工作表。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    等等...

    ReadLine()是不是不會把CRLF讀進來?

    我好像產生檔案的時候忘記加上CRLF,結果所有資料都在同一列

    2016年7月5日 上午 10:38
  • ReadLine 回傳的結果會把換行濾掉

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2016年7月5日 下午 01:10
    版主