使用C#在OPEN XML sdk中添加引用另一个工作簿中的单元格的公式

Amete有福

我正在使用C#开发Open XML sdk 2.0。

我有两个工作簿Book1和Book2。假设Book1在其单元格D1中的值为10。然后book2的单元格A1中应该有10个。Book1已经创建,我需要处理book2。

我试图创建一个工作簿Book2,其中单元格A1引用了Book1(Sheet1)中的单元格D1。每当用户更改Book1中的D1时,一旦完成,book2中的值A1也应更改。

到目前为止我有这段代码

Row row2 = new Row()
        {
            RowIndex = 1U,
            Spans = new ListValue<StringValue>()
        };

// string formula= "Sum(B2,B5)"; // this one works 
String formula= "'C:\Workbooks\[Book2.xlsx]Sheet1'!$D$1"; // this does not

Cell cell3 = new Cell() { CellReference = "A1" };
CellFormula formula = new CellFormula(formula);
cell3.Append(formula);

CellValue value = new CellValue();
value.Text = "0";
cell3.Append(value);

row2.Append(cell3);

每当我将行添加到工作簿并保存时,如果我使用以下公式,则说book2损坏

formula= "'C:\Workbooks\[Book2.xlsx]Sheet1'!$D$1"; // this does not

但是,如果我使用一个简单的公式,如下所示。

formula= "Sum(B2,B5)"; // this one works 

我不确定如何使用C#在OPEN XML sdk中添加引用另一个工作簿中的单元格的公式。

骨el

问题是Excel需要一个外部引用来通知它另一个工作表的存在。为此,您需要在上调用AddExternalRelationship方法WorkBookPart

workbookpart.AddExternalRelationship("http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath", 
        new System.Uri(@"C:\Workbooks\Book2.xlsx", UriKind.Absolute), "rId1");

如果您解压缩引用另一个工作簿的Xlsx文件并导航到该xl文件夹,则将看到一个externalLinks文件夹。这是您需要创建的部分。

这是一个完整的代码示例,该示例将根据我从MSDN文档改编的内容进行工作

public static void CreateSpreadsheetWorkbook(string filepath)
{
    SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.
        Create(filepath, SpreadsheetDocumentType.Workbook);

    // Add a WorkbookPart to the document.
    WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
    workbookpart.Workbook = new Workbook();

    // Add a WorksheetPart to the WorkbookPart.
    WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();

    SheetData sheetData = new SheetData();
    worksheetPart.Worksheet = new Worksheet(sheetData);

    // Add Sheets to the Workbook.
    Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.
        AppendChild<Sheets>(new Sheets());

    // Append a new worksheet and associate it with the workbook.
    Sheet sheet = new Sheet()
    {
        Id = spreadsheetDocument.WorkbookPart.
            GetIdOfPart(worksheetPart),
        SheetId = 1,
        Name = "mySheet"
    };
    sheets.Append(sheet);

    Row row2 = new Row()
        {
            RowIndex = 1U
        };

    //add your formula as per your question
    String formula = @"'C:\Workbooks\[Book2.xlsx]Sheet1'!$D$1";

    Cell cell3 = new Cell() { CellReference = "A1" };
    CellFormula cellFormula = new CellFormula(formula);
    cell3.Append(cellFormula);

    row2.Append(cell3);

    //add a relationship that points to the correct file
    workbookpart.AddExternalRelationship("http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath",
        new System.Uri(@"C:\Workbooks\Book2.xlsx", UriKind.Absolute), "rId1");

    sheetData.Append(row2);

    workbookpart.Workbook.Save();

    // Close the document.
    spreadsheetDocument.Close();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 Excel 2007 中,是使用另一个单元格中引用的公式中的数据还是公式本身?

来自分类Dev

我可以在单元格公式内的另一个打开的工作簿中使用另一个打开的工作簿的 VBA 函数吗?

来自分类Dev

使用变量引用另一个工作表中的单元格

来自分类Dev

使用变量引用另一个工作表中的单元格

来自分类Dev

使用宏将一个工作簿中的单元格的值初始化到另一个工作簿

来自分类Dev

在另一个工作簿的公式中使用一个工作簿的引用

来自分类Dev

使用SUBSTITUTE公式从Excel中的字符串中删除文本,并从另一个单元格中引用要删除的文本

来自分类Dev

在另一个单元格中使用带有工作表名称的公式

来自分类Dev

使用间接访问另一个工作表中的单元格范围

来自分类Dev

将使用CONCATENATE创建的链接从一个单元格包含到另一个单元格的IMPORTHTML公式中

来自分类Dev

如何在另一个单元格中引用的公式中使用定义的名称以使其动态化

来自分类Dev

如何使用Open XML SDK在.xlsx文件的现有行中添加新单元格?

来自分类Dev

Excel:如何根据另一个单元格中的值在一个单元格中使用一个或另一个单独的公式?

来自分类Dev

在另一个公式中使用的单元格旁边的单元格的AVG

来自分类Dev

在另一个公式中使用的单元格旁边的单元格的AVG

来自分类Dev

如何使用另一个单元格中输入的数学符号编写公式?如何使用评估?

来自分类Dev

使用数据验证更改一个单元格后,如何自动更新单元格以匹配另一个工作表中的值?

来自分类Dev

如何使用存储在另一个单元格中的单元格中的文件路径来引用excel中的值

来自分类Dev

我想使用一个在公式中包含单元格引用的变量

来自分类Dev

使用VBA按代号引用另一个工作簿中的图纸

来自分类Dev

使用VBA按代号引用另一个工作簿中的图纸

来自分类Dev

如何使用c#将特定范围内的单元格从一个excel工作簿复制到另一个工作簿

来自分类Dev

如何使用参考单元格的值对另一个工作表中的excel数据求和

来自分类Dev

使用多个不连续的单元格值过滤另一个工作表中的数据

来自分类Dev

如何使用一个xml文件中的信息在C#中创建另一个?

来自分类Dev

Excel VBA - 使用单元格中的值作为地址来定位另一个单元格

来自分类Dev

Excel-在RAND公式中的另一张工作表上使用单元格引用

来自分类Dev

使用循环将一个工作表中的未合并单元格复制到另一个工作表中的合并单元格

来自分类Dev

在另一个工作簿中引用单元格作为工作表的名称

Related 相关文章

  1. 1

    在 Excel 2007 中,是使用另一个单元格中引用的公式中的数据还是公式本身?

  2. 2

    我可以在单元格公式内的另一个打开的工作簿中使用另一个打开的工作簿的 VBA 函数吗?

  3. 3

    使用变量引用另一个工作表中的单元格

  4. 4

    使用变量引用另一个工作表中的单元格

  5. 5

    使用宏将一个工作簿中的单元格的值初始化到另一个工作簿

  6. 6

    在另一个工作簿的公式中使用一个工作簿的引用

  7. 7

    使用SUBSTITUTE公式从Excel中的字符串中删除文本,并从另一个单元格中引用要删除的文本

  8. 8

    在另一个单元格中使用带有工作表名称的公式

  9. 9

    使用间接访问另一个工作表中的单元格范围

  10. 10

    将使用CONCATENATE创建的链接从一个单元格包含到另一个单元格的IMPORTHTML公式中

  11. 11

    如何在另一个单元格中引用的公式中使用定义的名称以使其动态化

  12. 12

    如何使用Open XML SDK在.xlsx文件的现有行中添加新单元格?

  13. 13

    Excel:如何根据另一个单元格中的值在一个单元格中使用一个或另一个单独的公式?

  14. 14

    在另一个公式中使用的单元格旁边的单元格的AVG

  15. 15

    在另一个公式中使用的单元格旁边的单元格的AVG

  16. 16

    如何使用另一个单元格中输入的数学符号编写公式?如何使用评估?

  17. 17

    使用数据验证更改一个单元格后,如何自动更新单元格以匹配另一个工作表中的值?

  18. 18

    如何使用存储在另一个单元格中的单元格中的文件路径来引用excel中的值

  19. 19

    我想使用一个在公式中包含单元格引用的变量

  20. 20

    使用VBA按代号引用另一个工作簿中的图纸

  21. 21

    使用VBA按代号引用另一个工作簿中的图纸

  22. 22

    如何使用c#将特定范围内的单元格从一个excel工作簿复制到另一个工作簿

  23. 23

    如何使用参考单元格的值对另一个工作表中的excel数据求和

  24. 24

    使用多个不连续的单元格值过滤另一个工作表中的数据

  25. 25

    如何使用一个xml文件中的信息在C#中创建另一个?

  26. 26

    Excel VBA - 使用单元格中的值作为地址来定位另一个单元格

  27. 27

    Excel-在RAND公式中的另一张工作表上使用单元格引用

  28. 28

    使用循环将一个工作表中的未合并单元格复制到另一个工作表中的合并单元格

  29. 29

    在另一个工作簿中引用单元格作为工作表的名称

热门标签

归档