簡體   English   中英

C# CSV 文件:如何在使用數據表讀取 csv 文件時跳過幾列

[英]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_NameRole列。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM