[英]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.