gpt4 book ai didi

c# - 如何在 c# 中使用 excel 数据阅读器获取特定单元格的内容?

转载 作者:行者123 更新时间:2023-12-04 21:53:58 24 4
gpt4 key购买 nike

我有一个 xlsx 文件(它是第一张纸)

Postcode    Sales_Rep_ID    Sales_Rep_Name  Year    Value
2121 456 Jane 2011 $84,219
2092 789 Ashish 2012 $28,322
2128 456 Janet 2013 $81,879
2073 123 John 2011 $44,491

如何获得名为 的列的特定值,其说 Sales_Rep_Name 值是珍妮特?我被困在下面的代码中,不知道该怎么做?
FileStream stream = File.Open(@"C:\Users\Bumba\Downloads\Sample-Sales-Data.xlsx", FileMode.Open, FileAccess.Read);
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);

DataSet result = excelReader.AsDataSet(new ExcelDataSetConfiguration() {
ConfigureDataTable = (_) => new ExcelDataTableConfiguration() {
UseHeaderRow = true
}
});

foreach (DataTable element in result.Tables) {
Console.WriteLine(element.Columns["Year"].ToString());
//what to do??????
}

excelReader.Close();
Console.ReadLine();

有人帮忙....

最佳答案

最简单的选择就是枚举表(工作表)行并比较 Sales_Rep_Name 中的值。针对所需值的列(“珍妮特”):

foreach (DataTable table in result.Tables)
{
foreach (DataRow row in table.Rows)
{
var salesRepName = (string)row["Sales_Rep_Name"];
if (String.Equals(salesRepName, "Janet"))
{
var year = (int)(double)row["Year"];
Console.WriteLine($"Janet's year is {year}");
}
}
}

您也可以使用 DataTable.Select(string filterExpression)匹配所需行的方法:
foreach (DataTable table in result.Tables)
{
foreach (DataRow row in table.Select("Sales_Rep_Name = 'Janet'"))
{
var year = (int)(double)row["Year"];
Console.WriteLine($"Janet's year is {year}");
}
}

第二个选择会更快(当数据很大时),但是第一个更灵活并且允许使用更复杂的过滤器。

关于c# - 如何在 c# 中使用 excel 数据阅读器获取特定单元格的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48732302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com