【问题标题】:C# ClosedXML assign values from cells in a specific row to stringC# ClosedXML 将特定行中单元格的值分配给字符串
【发布时间】: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(); .... 什么都不返回

标签: c# closedxml


【解决方案1】:

好的,我找到了解决办法。

我换行了... var ws = workbook.Worksheets.Add("单元格值");

到.... var ws = workbook.Worksheet(1);

现在这有效.... Storage.StreetAddress = ws.Cell(xlRow, 1).GetString();

【讨论】:

  • 将此标记为答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-13
  • 1970-01-01
  • 1970-01-01
  • 2021-02-01
  • 1970-01-01
相关资源
最近更新 更多