OpenXML更新/写入Excel单元格(即使它为null)

时间:2014-12-05 15:03:12

标签: c# excel openxml

我有一个XLSX Excel文档,我正在使用OpenXML 2.5进行更新。可以理解的是,一些单元格更难以更新,因为它们当前为空。当单元格值为null时,以下方法为GetCell返回null,因此我无法继续进行单元格更新。

是否有任何一体化方法(或其他库)将更新单元格,即使它是null?

编辑:我在使用OpenXML时遇到了各种各样的问题,所以在此期间我开始使用ClosedXML,而在每种情况下,ClosedXML都能正常运行。

public static void UpdateCell(string docName, string text,
        uint rowIndex, string columnName)
    {
        // Open the document for editing.
        using (SpreadsheetDocument spreadSheet =
                 SpreadsheetDocument.Open(docName, true))
        {
            WorksheetPart worksheetPart =
                  GetWorksheetPartByName(spreadSheet, "Sheet1");

            if (worksheetPart != null)
            {
                Cell cell = GetCell(worksheetPart.Worksheet,
                                         columnName, rowIndex);

                cell.CellValue = new CellValue(text);
                cell.DataType =
                    new EnumValue<CellValues>(CellValues.Number);

                // Save the worksheet.
                worksheetPart.Worksheet.Save();
            }
        }

    }


 private static Cell GetCell(Worksheet worksheet,
              string columnName, uint rowIndex)
    {
        Row row = GetRow(worksheet, rowIndex);

        if (row == null) return null;

        var FirstRow = row.Elements<Cell>().Where(c => string.Compare
               (c.CellReference.Value, columnName +
               rowIndex, true) == 0).FirstOrDefault();

        if (FirstRow == null) return null;

        return FirstRow;
    }

0 个答案:

没有答案