OpenXML 添加外部链接

问题描述

我有包含两个外部链接文件,我需要再添加一个。通常只需在 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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...