【发布时间】:2015-02-11 09:12:57
【问题描述】:
我有一个看起来像这样的 Excel 工作表。 |A1|B1| “空白”|D1|E1|F1| IE。只有第一行被填充,第三列是空白的。我在 C# 中使用 interop.excel 以下列方式解析它:
Excel.Application exApp = OpenExcel();
String mySheet = @"C:\c#\rapport.xlsx";
Excel.Workbook wb = exApp.Workbooks.Open(mySheet);
Excel.Worksheet ws = wb.Sheets[1];
Excel.Range row = ws.Rows[1];
我创建了一个仅包含第 1 行非空单元格的新范围
Excel.Range rng = row.SpecialCells(Excel.XlCellType.xlCellTypeConstants);
现在:如果我使用rng.Select,我的工作表中的所有非空单元格都会被选中。如果我使用rng.Count,它将返回 5,这是我的工作表中非空单元格的数量。但是当我使用以下方法逐个打印单元格时:
Console.WriteLine(rng[1,i].Value.ToString());
它表明 rng[1, 1-2] 包含“A1 和 B1”,这很好。但 rng[1, 3] 为空或 null。并且 rng[1, 4-7] 包含 D1-F1。
这怎么可能?
我的主要目标是将所有非空值存储在字符串数组中。但我无法选择正确的值,因为我的范围 rng 既为空又非空是一种奇怪的方式。
【问题讨论】:
-
您需要使用 foreach 构造迭代 rng 中的单元格。使用
.Item方法并不局限于范围内的实际单元格 - 它只是相对于范围的第一个单元格。 -
谢谢伙计!这解决了它!