使用OpenXML从Excel中删除行

时间:2012-12-07 13:17:24

标签: excel openxml

我需要从excel文件中删除某些行。 excel文件是一个模板,可能有额外的行,必须删除最终输出。但是删除单元会破坏文件。代码简单如下

Worksheet worksheet = worksheetPart.Worksheet;
SheetData sheetData = worksheet.GetFirstChild<SheetData>();

foreach (var row in sheetData.Elements<Row>().
Where(r => r.RowIndex.Value >= rowIndex && r.RowIndex.Value < rowIndex +  count).ToList())
{
  row.Remove();
}

或者,我尝试将现有单元格设置为空白值。

Worksheet worksheet = worksheetPart.Worksheet;
SheetData sheetData = worksheet.GetFirstChild<SheetData>();
foreach (var row in sheetData.Elements<Row>().
Where(r => r.RowIndex.Value >= rowIndex && r.RowIndex.Value < rowIndex + count).ToList())
{
  IEnumerable<Cell> cells = row.Elements<Cell>().ToList();
  if (cells != null)
  {
    foreach (Cell cell in cells)
    {
      if (cell.CellValue != null && !String.IsNullOrEmpty(cell.CellValue.Text))
      {
        cell.DataType = new EnumValue<CellValues>(CellValues.String);
        cell.CellValue = new CellValue("");
      }
    }
  }
}

我的文件总是被破坏。

1 个答案:

答案 0 :(得分:0)

问题是保存工作表/工作簿的最终流程大小不匹配。