相关疑难解决方法(0)

Open XML SDK 2.0 - 如何更新电子表格中的单元格?

我想使用Open XML SDK 2.0(CT​​P)更新图表使用的电子表格中的单元格.我找到的所有代码示例都插入了新的单元格.我正在努力检索正确的工作表.

public static void InsertText(string docName, string text, uint rowIndex, 
  string columnName)
{
  // Open the document for editing.
  using (SpreadsheetDocument spreadSheet = 
    SpreadsheetDocument.Open(docName, true))
  {
    Workbook workBook = spreadSheet.WorkbookPart.Workbook;

    WorksheetPart worksheetPart = workBook.WorkbookPart.
      WorksheetParts.First();

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

    // If the worksheet does not contain a row with the specified
    // row index, insert one.
    Row row;

    if (sheetData.Elements<Row>().Where(
      r => r.RowIndex == rowIndex).Count() != 0)
      // At this point I am expecting a match …
Run Code Online (Sandbox Code Playgroud)

c# xml excel sdk

37
推荐指数
3
解决办法
7万
查看次数

OpenXML SDK:使Excel重新计算公式

我通过Microsoft Office OpenXML SDK 2.0更新Excel电子表格的一些单元格.更改值会使包含依赖于已更改单元格的公式的所有单元格无效.但是,由于缓存的值,Excel不会重新计算公式,即使用户单击"立即计算".

通过SDK使整个工作簿的所有依赖单元无效的最佳方法是什么?到目前为止,我在http://cdonner.com/introduction-to-microsofts-open-xml-format-sdk-20-with-a-focus-on-excel-documents.htm找到了以下代码片段:

public static void ClearAllValuesInSheet
      (SpreadsheetDocument spreadSheet, string sheetName)
{
    WorksheetPart worksheetPart =
        GetWorksheetPartByName(spreadSheet, sheetName);

    foreach (Row row in
       worksheetPart.Worksheet.
          GetFirstChild().Elements())
    {
        foreach (Cell cell in row.Elements())
        {
            if (cell.CellFormula != null &&
                  cell.CellValue != null)
            {
                cell.CellValue.Remove();
            }
        }

    }

    worksheetPart.Worksheet.Save();
}
Run Code Online (Sandbox Code Playgroud)

除了这个片段不能为我编译的事实,它有两个限制:

  • 它只会使单张纸无效,但其他纸张可能包含相关配方
  • 它没有考虑任何依赖关系.

我正在寻找一种有效的方法(特别是,只会使依赖于某个单元格值的单元格无效),并考虑所有表格.

更新:

与此同时,我设法编译和运行代码,并删除工作簿的所有工作表上的缓存值.(参见答案.)我仍然对更好/替代解决方案感兴趣,特别是如何只删除实际依赖于更新单元格的单元格的缓存值.

.net excel openxml openxml-sdk

12
推荐指数
1
解决办法
2万
查看次数

标签 统计

excel ×2

.net ×1

c# ×1

openxml ×1

openxml-sdk ×1

sdk ×1

xml ×1