【发布时间】:2016-01-28 10:14:17
【问题描述】:
我在尝试读取 Excel 文档的特定行时遇到了一些问题。
我的实现在这里:Reading Excel in c# where some columns are empty。 怎么看,整个Excel都被拿进了一个DataTable里。
现在我想得到一个特定范围的 n 值:
我认为是 DataTable 的问题...我认为也许我应该获取另一个 DataTable...也许使用另一个不同的查询?
【问题讨论】:
我在尝试读取 Excel 文档的特定行时遇到了一些问题。
我的实现在这里:Reading Excel in c# where some columns are empty。 怎么看,整个Excel都被拿进了一个DataTable里。
现在我想得到一个特定范围的 n 值:
我认为是 DataTable 的问题...我认为也许我应该获取另一个 DataTable...也许使用另一个不同的查询?
【问题讨论】:
您似乎使用的是固定模板,因此您可以使用不同范围内的不同查询来解决。
要选择特定范围,您可以使用以下查询:
string query = "SELECT * FROM [YourSheet$B58:D70]";
如果您知道范围的开始位置但不知道行数,则可以使用以下语法:
string query = "SELECT * FROM [YourSheet$B58:D]";
在您的连接字符串中使用HDR=NO 并更改起始行,您可以使用此查询来简化您的后续操作:
SELECT [F1] AS Compagnia,
[F2] AS Agenzia,
[F3] AS DataSinistro
FROM [YourSheet$B59:D]
请记住,您还可以使用 WHERE 过滤结果或排除空行;即:
SELECT [F1] AS Compagnia,
[F2] AS Agenzia,
[F3] AS DataSinistro
FROM [YourSheet$B59:D]
WHERE [F3] IS NOT NULL
【讨论】:
"SELECT [compagnia], [agenzia-esercizio-numero], [data sinistro] FROM [" + sheet + "$B58:DY1000]" ... 1000 是限制(没有这个,继续阅读无限的...)。可悲的是,GridView 会加载所有行,即使是空的也是如此。