C 讀取csv資料

2021-09-20 06:49:49 字數 1885 閱讀 3134

最近忙的乙個專案中有對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檔案,如下 寫入...