如何使用OpenXML设置Excel“打印标题”

时间:2015-05-14 13:02:04

标签: c# excel openxml openxml-sdk

如何使用OpenXML设置电子表格的“打印标题”属性,在每个打印页面的顶部显示一行?

  

Print titles interface

1 个答案:

答案 0 :(得分:2)

该属性直接保存在SpreadsheetPrintingParts对象中,但是,这似乎尚未完全集成到OpenXML中,并且需要将base64字符串传递给变量。 (see here)此字符串的内容似乎与打开文件的计算机绑定,这对我的实现不起作用 - 我无法通过{{1创建非损坏的文件}}

相反,我发现this post声明给定义名称“Print_Titles”的行具有相同的效果。然后我可以通过OpenXML使用以下代码创建一个定义的名称:

SpreadsheetPrintingParts.FeedData()

注意事项:

  1. 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}}为1索引
  2. DefinedName.LocalSheetId每个工作簿一次,但可以为不同的工作表包含多个Sheet.Id个对象。