【发布时间】:2018-08-23 20:30:07
【问题描述】:
我在脚本中的其他地方使用 ClosedXML,我正在像这样遍历每一行并且它有效。
var workbook = new XLWorkbook(ObjectRepPath);
var rows = workbook.Worksheet(1).RangeUsed().RowsUsed().Skip(1);
foreach (var row in rows)
{
objPage = row.Cell(1).GetString();
objElement = row.Cell(2).GetString();
if (objPage == page && objElement == element)
{
locType = row.Cell(3).GetString();
locParm = row.Cell(4).GetString();
}
}
之后,我需要从随机选择的行中的单元格中提取数据。这是我到目前为止所得到的,但它不起作用......
var workbook = new XLWorkbook(extFile);
var ws = workbook.Worksheets.Add("Cell Values");
var rnd = new Random();
int rowNum = rnd.Next(2, workbook.Worksheet(1).RangeUsed().RowsUsed().Count());
var dataRow = ws.Row(rowNum);
string dangit = dataRow.Cell(1).GetString();
System.Diagnostics.Debug.WriteLine("Why is this dang thing not working... " + dangit);
输出:为什么这该死的东西不起作用...
它只是空着回来。没有错误。有人看到我看不到的东西吗?
【问题讨论】:
-
什么是
datarow.Cell(1).Address?如果您在 Excel 中打开文件,该地址的值是多少? -
地址是随机的,所以每次运行都不同。当我将其更改为 .Address 并运行它时,它返回“C84”。文件中 C84 处的值为“AL”。所以这是一个有效/填充的字段。
-
ws.Cell("C84").GetString()返回什么?也是一个空字符串?该单元格是否包含公式或值? -
是的,那也一无所获。实际的 C84 单元格的值为“AL”。
-
另外,如果有帮助的话,..... string testdata = cell.ToString(); .... 返回 "ClosedXML.Excel.XLCell" / string testdata = cell.Value.ToSting(); .... 什么都不返回