【问题标题】:C# Find empty cells and write them inside with ClosedXmlC# 查找空单元格并使用 ClosedXml 将它们写入其中
【发布时间】:2019-07-15 09:05:05
【问题描述】:

我有这个问题,我已经安装了ClosedXml:

我已经创建并填充了一个 Excel 文件,现在我应该在已经填充的文件下方找到空白行并写入一些数据

例子:

[A, 1] = 名称; [B, 1] = 姓氏;

下一行将为空,我将传递一些变量来填充右侧的单元格。

OpenFileDialog FileExcel = new OpenFileDialog();

        if (FileExcel.ShowDialog() == DialogResult.OK)
        {
            try
            {
                var sr = new StreamReader(FileExcel.FileName);
            }
            catch (SecurityException ex)
            {
                MessageBox.Show($"Security error.\n\nError message: {ex.Message}\n\n" +
                $"Details:\n\n{ex.StackTrace}");
            }
        }


using (var excelWorkbook = new XLWorkbook(FileExcel.FileName))
        {
            var nonEmptyDataRows = excelWorkbook.Worksheet(Convert.ToInt32(comboBox1.SelectedItem)).RowsUsed();

            foreach (var dataRow in nonEmptyDataRows)
            {
                //for row number check
                if (dataRow.RowNumber() >= 1 && dataRow.RowNumber() <= 100)
                {

                }
            }
        }

【问题讨论】:

  • 您可以使用if(String.IsNullOrEmpty( IsNull(Cell.Value))检查单元格是否为空
  • @styx IsNull 不存在于当前上下文错误代码 CS0103 和 CS0117 单元格不包含“值”的定义

标签: c# excel closedxml


【解决方案1】:

你可以这样做

  int lastrow = worksheet.LastRowUsed().RowNumber(); 
  var rows = worksheet.Rows(1, lastrow);
  foreach (IXLRow  row in rows)
  {
      foreach (IXLCell cell in row.Cells())
      {                
          if (cell.IsEmpty())
          {
                //do something
          }

       }
   }

【讨论】:

  • 错误 CS1061 不包含 LastRowUsed 的定义,即使我将变量的名称放在工作表上
  • 试试var totalRows = worksheet.RowsUsed().Count();
  • 然后循环看到使用的行,但不是空后的行。所以在 row.IsEmpty 格式中它永远不会进入。示例:A1:满; A2:满; A3:清空循环到A2为止。
  • @Mrpit 修正了我的答案我在寻找一个空行,而不是一个空单元格
  • 谢谢,但我这样解决了:IXLWorksheet Worksheet2 = excelWorkbook.Worksheet (Convert.ToInt32 (Page Number)); IXLCell CellForNewData = Worksheet2.Cell (lastrow + 1, 1);
【解决方案2】:

使用row.Cells(false) 代替row.Cells()。它不会跳过未使用的单元格。然后你可以简单地检查cell.Value()是否为空

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 2011-08-19
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多