[英]C# CSV File : How to skip few columns while reading csv file using datatable
在使用數據表讀取 csv 時,我需要跳過一些條件列。 例如:我的 csv 文件具有Emp_Id, Emp_Name,Dept, Role, Addree and Salary
等標題。 我想在讀取 csv 文件並導入 rest 時跳過Emp_Name
和Role
列。
Emp_id Emp_Name部門角色地址薪水
我正在使用以下代碼讀取 csv 文件,沒有任何列跳過但現在我想跳過一些列: List listOfCol = new List(); 數據表 dt = 新數據表();
for (int i = 1; i <= colCount; i++)
{
string colName = XlRange.Cells[1, i].Value2.ToString();
DataColumn dataColumn = new DataColumn(colName);
dt.Columns.Add(dataColumn);
listOfCol.Add(colName);
}
for (int i = 2; i <= rowCount; i++)
{
DataRow dataRow = dt.NewRow();
for (int j = 1; j <= colCount; j++)
{
if (XlRange.Cells[i, j] != null && XlRange.Cells[i, j].Value2 != null)
{
dataRow[listOfCol[j - 1].ToString()] = XlRange.Cells[i, j].Value2.ToString();
}
else
{
dataRow[listOfCol[j - 1].ToString()] = "";
}
}
dt.Rows.Add(dataRow);
}
這取決於您如何構建 DataTable。
你可以試試 NuGet package csvHelper
還有一個看起來像這樣的 class 定義。
public class Foo {
public int Id { get; set; }
public string Name { get; set; }
}
如果我們的 class 屬性名稱與我們的 CSV 文件 header 名稱匹配,我們可以在沒有任何配置的情況下讀取該文件。
using (var reader = new StreamReader("path\\to\\file.csv"))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture)) {
var records = csv.GetRecords<Foo>();
}
到 select 只有特定列使用列索引
public class Foo {
[Index(0)]
public int Id { get; set; }
[Index(1)]
public string Name { get; set; }
}
謝謝
您能否提供您正在使用的示例代碼,以便我們提供更好的幫助。 執行此操作的粗略方法是,當您讀取 csv 文件的每一行時,分隔符將其溢出,該分隔符返回您的項目數組,然后您按索引挑選以添加到數據表中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.