gpt4 book ai didi

linq - 使用 LINQ 读取 Excel

转载 作者:行者123 更新时间:2023-12-01 17:29:44 24 4
gpt4 key购买 nike

我想读取 Excel 2003(无法更改,因为它来自第三方)和列表或字典中的组数据(我不知道哪一个好)例如下面(Excel 格式)书籍数据[Excel 中的第一行和第一列]第二行(无记录)代码,姓名,IBN[第三行(第二列,第三列]Aust [第四行第一列] UX test1 34 [第五行(第二列,第三列)..........

图书数据

     Code     Name     IBN

澳大利亚

    UX         test1     34
UZ test2 345
UN test3 5654

美国

   UX         name1     567
TG nam2 123
UM name3 234

我正在使用以下代码读取 Excel 数据(来自 Google 的一些帮助)

        string filename = @"C:\\" + "Book1.xls";
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + filename + ";" +
"Extended Properties=Excel 8.0;";

OleDbDataAdapter dataAdapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
DataSet myDataSet = new DataSet();
dataAdapter.Fill(myDataSet, "BookInfo");
DataTable dataTable = myDataSet.Tables["BookInfo"];


var rows = from p in dataTable.AsEnumerable()
where p[0].ToString() != null || p[0].ToString() != "" && p.Field<string>("F2") != null
select new
{ countryName= p[0],
bookCode= p.Field<string>("F2"),
bookName= p.Field<string>("F3")
};

上面的代码不能很好地获取“代码”,我正在使用“F2”,而对于国家/地区,我正在使用 p[0]。我应该使用什么来获取每个国家/地区的代码和名称。

它还提供了我想要的信息,但我不知道如何放入列表或字典或类中,因此我可以通过传递参数作为国家/地区名称来获取数据。

简而言之,首先它必须将所有数据放入列表或字典中,然后您可以调用列表或字典按国家/地区过滤数据。谢谢

最佳答案

您需要做两件事:

首先,您需要重新格式化电子表格,以使列标题位于第一行,如下表所示

| Country | Code | Name    | IBN  |
|---------|------|---------|------|
| Aust | UX | test1 | 34 |
| Aust | UZ | test2 | 345 |
| Aust | UN | test3 | 5654 |
| US | UX | name1 | 567 |
| US | TG | name2 | 123 |
| US | UM | name3 | 234 |

其次,使用Linq to Excel库来检索数据。它负责建立 oledb 连接并为您创建 sql。下面是一个示例,说明使用该库是多么容易

var book = new ExcelQueryFactory("pathToExcelFile");
var australia = from x in book.Worksheet()
where x["Country"] == "Aust"
select new
{
Country = x["Country"],
BookCode = x["Code"],
BookName = x["Name"]
};

查看 Linq to Excel intro video有关开源项目的更多信息。

关于linq - 使用 LINQ 读取 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1485958/

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