簡體   English   中英

如何使用OpenXML設置Excel“打印標題”

[英]How to set Excel “Print Titles” with OpenXML

如何使用OpenXML設置電子表格的“打印標題”屬性,以在每個打印頁面的頂部顯示一行?

打印標題界面

該屬性直接保存在SpreadsheetPrintingParts對象中,但是, SpreadsheetPrintingParts ,該屬性似乎尚未完全集成到OpenXML中,並且需要將base64字符串傳遞給該變量。 請參閱此處 )此字符串的內容似乎與打開文件的機器有關,這對於我的實現不起作用-我無法通過SpreadsheetPrintingParts.FeedData()創建非損壞的文件。

取而代之的是,我發現這篇文章說給行定義名稱“ Print_Titles”具有相同的效果。 然后,我可以使用以下代碼通過OpenXML創建定義的名稱:

public void SetPrintTitleRows(int startRowIndex, int? endRowIndex = null)
        {
            var localSheetId = _localsheetId++;    //LocalSheetIds are 0-indexed.

            var definedName = new DefinedName
            {
                Name = "_xlnm.Print_Titles",
                LocalSheetId = localSheetId,
                Text = String.Format("\'{0}\'!${1}:${2}", _sheetName, startRowIndex, endRowIndex ?? startRowIndex)
            };

            if (_workbookPart.Workbook.DefinedNames == null)
            {
                var definedNamesCol = new DefinedNames();
                _workbookPart.Workbook.Append(definedNamesCol);
            }

            _workbookPart.Workbook.DefinedNames.Append(definedName);
        }

注意事項:

  1. DefinedName.LocalSheetId的索引為零,而Sheet.Id的索引為1。
  2. 每個工作簿一次, DefinedNames ,但可以包含多個用於不同工作表的DefinedName對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM