在现有的OpenXML电子表格中添加页脚

时间:2012-05-10 19:16:01

标签: excel c#-4.0 openxml openxml-sdk

编辑:我在原帖中遗漏了更多详细信息。该程序使用模板流而不是具体的模板用于" .Open"命令。使用此代码块初始化模板流:

public void Initialize(Stream templateStream)
{
    spreadsheet = SpreadsheetDocument.Open(templateStream, true);
}

我还在研究这个,但有没有人知道在OpenXML中使用流为HeaderFooter对象的含义?

我是OpenXML的新手,仍然在阅读和学习这个庞大的SDK。我继承了一个C#MVC.NET程序,该程序使用OpenXML在Excel电子表格上显示信息,所有这些都有效,但我现在需要在同一个电子表格中添加一个页脚,然后点击一些砖块我的OpenXML知识中的墙壁。

我将所需的页脚信息放入电子表格中,使用Open XML SDK Productivity Tool打开它,并在< .x:oddFooter(OddFooter)下找到此代码:

 // Creates an OddFooter instance and adds its children.
        public OddFooter GenerateOddFooter()
        {
            OddFooter oddFooter1 = new OddFooter();
            oddFooter1.Text = "&L&\"Times New Roman,Regular\"Page &P of &N&C&\"Times New Roman,Regular\"Generated On: <Date/Time> Central&R&\"Times New Roman,Regular\"Report";
            return oddFooter1;
        }

此代码在&lt;&gt; x:headerFooter(OddFooter)下一级:

// Creates an HeaderFooter instance and adds its children.
        public HeaderFooter GenerateHeaderFooter()
        {
            HeaderFooter headerFooter1 = new HeaderFooter();
            OddFooter oddFooter1 = new OddFooter();
            oddFooter1.Text = "&L&\"Times New Roman,Regular\"Page &P of &N&C&\"Times New Roman,Regular\"Generated On: <Date/Time> Central&R&\"Times New Roman,Regular\"Report";

            headerFooter1.Append(oddFooter1);
            return headerFooter1;
        }

现在我当然需要在某处附加页脚信息,这就是我被困的地方。在&lt;&gt; x:工作表(工作表)中,我看到了这行代码:

worksheet1.Append(headerFooter1);

这看起来很简单,但是当我回顾应用程序代码时,我发现没有要附加的工作表对象。我以为我接近以下代码行:

spreadsheet.WorkbookPart.Workbook.Append(headerFooter1);

但这没有任何结果。在应用程序中,我看到一个SpreadsheetDocument对象和对OpenXMLParts的引用...我是否需要将电子表格部件附加到?或者我是否需要采用不同的方法使用电子表格而不是工作表对象?我是否需要实现当前工作表然后追加?

我觉得这有一个简单的解决方案,但正如我所说,我还在学习SDK。

谢谢!

1 个答案:

答案 0 :(得分:0)

对于那些不了解生产力工具的人,它包含在SDK中,可以从https://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=5124下载

在我的64位计算机上,该工具的安装路径是: “C:\ Program Files(x86)\ Open XML SDK \ V2.0 \ tool \ OpenXmlSdkTool.exe”

您应该能够手动将页脚添加到电子表格中,然后使用该工具将其打开,并查看创建整个电子表格所需的确切C#,包括页脚。然后,您可以删除不必要的代码部分,例如一些自动添加的样式。