我需要用兩個excel文件填充兩個數據表。這些文件可以是逗號分隔值文件(.csv),也可以是Excel文檔(.xlsx)文件。我用一個函數來我的.csv轉換爲數據表:發生將.csv轉換爲數據表時的額外引號
public DataTable GetDataTableFromCsv(string path)
{
DataTable dataTable = new DataTable();
String[] values;
values = File.ReadAllLines(path);
string[] csvRows = System.IO.File.ReadAllLines(path);
string[] headers = csvRows[0].Split(',');
// Adding columns name
foreach (var item in headers)
dataTable.Columns.Add(new DataColumn(item));
string[] fields = null;
foreach (string csvRow in csvRows)
{
fields = csvRow.Split(',');
DataRow row = dataTable.NewRow();
row.ItemArray = fields;
dataTable.Rows.Add(row);
}
return dataTable;
}
的問題,當我嘗試我的兩個DataTable具有比較:
ieDiff = dt1.AsEnumerable().Except(dt2.AsEnumerable(), DataRowComparer.Default);
我的第一個數據表被獲得。 xlsx文件包含正確的值,而通過.csv文件獲得的第二個數據表包含正確的值,但帶有一些額外的引號。
例如:
dt1.Rows [10](從數據表的.csv)意願包含:
- 的Item1
- 項目2
- 「」
- 「項目4」
dt2.Rows [10](數據表從.XLSX)意願包含:
- 的Item1
- 項目2
- 。
- 項目4
我知道我可以修剪所有這些,但肯定是有執行此更好的辦法?
csv文件,爲什麼不能與Excel文件處理直接跳過該.csv階段?即使在最好的日子裏,CSV也是一種非常愚蠢的格式。 – 2013-04-04 15:22:08
我知道這一點,但我不能那樣做。我需要與此不幸地合作。 – Sebastien 2013-04-04 15:23:37
你需要報價嗎?如果沒有,那麼只需在foreach循環中添加這一行fields = fields.Replace(「\」「,」「); – 2013-04-04 15:30:29