OpenXML 添加外部链接

时间:2021-01-24 08:00:34

标签: openxml-sdk external-links

我有包含两个外部链接的文件,我需要再添加一个。通常只需在 Excel 中创建我需要的内容,保存文件并使用生产力工具重新打开它并找到反映的代码,但它现在不起作用。当我使用反射代码时,Excel 无法正确读取文件并在部分 /xl/externalReferences/externalReference3.xml 中引发错误。

      ExternalWorkbookPart part2 = workbookPart.AddNewPart<ExternalWorkbookPart>("rId5");
  ExternalRelationship externalRelationship = part2.AddExternalRelationship("http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath",
     new System.Uri("/AAA.xlsx", System.UriKind.Relative), "rId1");

  ExternalLink externalLink1 = new ExternalLink();

  ExternalBook externalBook1 = new ExternalBook() { Id = "rId1" };
  //externalBook1.AddNamespaceDeclaration("r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships");

  SheetNames sheetNames1 = new SheetNames();
  SheetName sheetName1 = new SheetName() { Val = "Sheet1" };
  sheetNames1.Append(sheetName1);

  SheetDataSet sheetDataSet1 = new SheetDataSet();
  ExternalSheetData externalSheetData1 = new ExternalSheetData() { SheetId = (UInt32Value)0U };

  ExternalRow externalRow1 = new ExternalRow() { RowIndex = (UInt32Value)2U };
  ExternalCell externalCell1 = new ExternalCell() { CellReference = "A2", DataType = CellValues.String };
  Xstring xstring1 = new Xstring();
  xstring1.Text = "link test";

  externalCell1.Append(xstring1);
  externalRow1.Append(externalCell1);
  externalSheetData1.Append(externalRow1);
  sheetDataSet1.Append(externalSheetData1);

  externalBook1.Append(sheetNames1);
  externalBook1.Append(sheetDataSet1);
  externalLink1.Append(externalBook1);

  part2.ExternalLink = externalLink1;

  ExternalReferences externalReferences = workbook.ExternalReferences;
  ExternalReference externalReference = new ExternalReference() { Id = "rId5" };
  externalReferences.Append(externalReference);

我不知道错误在哪里,但可能没有正确添加外部链接。当我解压缩由代码创建的 xlsx 文件时,他只有 2 个 ExternalLinks 和 1 个 ExternalReference。但在 Excel 中创建的参考文件有 3 个 ExternalLinks 和 0 个 ExternalReference。enter image description here

0 个答案:

没有答案
相关问题