經常用到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 ...