最近忙的乙個專案中有對csv資料的操作,主要是讀的問題,以為很簡單,不就是資料按行讀取後,用逗號來分隔嗎!
剛開始確實也是這麼做的,直到遇到了單元格中含有逗號的情況,就懵逼了。
舉個栗子:
有這麼乙個csv檔案,通過用txt方式開啟後
正確的結果應該是按照每列的資料讀取,也就是
column1: "1,3,44,55"
column2:2
column3:"""231"",""232"""
column4:"3,4,5"
關於每列資料是怎麼處理逗號和分號的情況,還是請度娘幫忙吧,我的理解是單元格中如果有逗號的情況,在轉換為txt的時候會用雙引號來表示該單元格,如:column1;如果有分號的情況,在用txt開啟的時候分號會變為兩個,如果該單元格還有逗號的情況,還會有兩個分號表示該單元格,如:column3.
要怎樣把這行資料正確的讀取出來呢?達到我要的效果呢,就會涉及到對逗號和雙引號的處理了,先看處理結果:
每個資料對應著每個單元格的內容,至於怎麼處理就和具體業務有關係了。
上**:
迴圈讀取csv每行內容:
/// /// 讀取csv指定列類容
///
///
///
public static listgetcsvvalue(filestream fs)
csvdata csvdata = new csvdata();
// 將csv轉換為string 陣列
string split = utils.getcsvvalue(strline).toarray();
// csvdata 根據自身業務需要,抽取csv的那些列
results.add(csvdata);
}reader.close();
fs.close();
}catch (exception ex)
return results;
}
utils.getcsvvalue函式實現
/// /// 處理雙引號
///
///
///
public static string handlequote(string line)
else
else
} }}
return value;}}
/// /// 遞迴取值
///
///
///
public static listgetcsvvalue(string line)
else
}else
else}}
}return spilts;
}
可能會用到的引用:
using system.data;
using system.io;
using system;
using system.text;
using system.collections.generic;
using system.text.regularexpressions;
c 讀取csv到陣列 python讀取csv檔案
python讀取csv檔案 csv檔案,用記事本編輯,然後命名為test1.csv 1,2,3,4 5,6,7,8 9,10,11,12 用excel開啟,就是這樣的 使用python讀取檔案 按行讀取。然後把讀到的東西賦值給python程式中的變數。這個變數,可以是乙個列表 在這裡,是乙個2維的列...
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檔案,如下 寫入...