C 讀取 CSV 檔案,簡易實現

2022-01-16 11:42:03 字數 1821 閱讀 4283

經常用到csv檔案,一直用odbc進行讀取,但是在unicode編碼的時候讀取不正確,有時候就算是ansi編碼,如一列資料混編,讀取也不正確。不清楚是不是個人電腦的問題。只好自己寫個來實現簡單的讀取,解析含","及"""號csv檔案。

更新1:使用中發現有些軟體生存csv檔案時,所有資料預設帶有"",以前**處理帶引號空欄位資料不正確。

**如下,預設用

utf8

編碼,一次性讀取整個csv檔案,若誰試用了此段**,有問題請反饋給我,謝謝。

///

///讀取csv檔案到datatable

/// ///

///static

private datatable readcsv(string

filepath)

for (int i = 0; i < lines.length; i++)

try

catch

}return

dt; }

//////

解析字串 獲取 該行的資料 已經處理,及"號

/// ///

該行的內容

///總的條目數

///static

private

string getrow(string line, int

cnt)

list

list = new list();

int n = 0, begin = 0

;

bool flag = false

;

for (int i = 0; i < strs.length; i++)

//其實有引號,但該段沒有,號,直接新增

n = 0

;

foreach (char ch in

strs[i])

}if (n % 2 == 0

)

//該段有引號 有 ,號,下一段增加後新增

flag = true

; begin =i;

i++;

for (i = begin + 1; i < strs.length; i++)

}if (strs[i][strs[i].length - 1] == '

\"' && n % 2 == 0

)

}list.add(sb.tostring());

break

; }}}

return

removequotes(list.toarray());

}//////

將解析的資料 去除多餘的引號

/// ///

///static

string removequotes(string

strs)

//若該項資料頭和尾加上引號

if (strs[i].length > 2 && strs[i][0] == '

\"' && strs[i][strs[i].length - 1] == '\"'

)

//若該項資料中間有引號

strs[i] = strs[i].replace("

\"\"

", "\""

); }

return

strs;

}

c 讀取csv檔案

目前任務需要處理大量excel 為便於處理轉化為csv格式。csv是一種以半形逗號和換行符作為分割的excl 格式,用記事本直接開啟便很清楚的看到內部構造。之前曾經用c 處理,比較方便,直接將csv讀取為datatable格式進行處理,網上有現成 竊以為應該多練練c 就試一下。菜鳥乙個,只作為記錄 ...

C 讀取CSV檔案

include include include include include using namespace std void main 寫入3行資料 for int i 0 i 3 i outfile.close cout 寫入資料完成 endl 可使用excel開啟建立的csv檔案,如下 寫入...

C 讀取 csv檔案

由於專案需要把.csv檔案中的資訊寫到資料庫中,npoi處理.csv檔案不太好使所以得換一種方法,最後找到了lumenworks.framework.io這個好東西,可以很方便的滿足我的需求,引用也很方便直接在nuget中安裝即可。示例 如下 public datatable csvtotable ...