如何使用OpenXML设置电子表格的“打印标题”属性,在每个打印页面的顶部显示一行?
答案 0 :(得分:2)
该属性直接保存在SpreadsheetPrintingParts
对象中,但是,这似乎尚未完全集成到OpenXML中,并且需要将base64字符串传递给变量。 (see here)此字符串的内容似乎与打开文件的计算机绑定,这对我的实现不起作用 - 我无法通过{{1创建非损坏的文件}}
相反,我发现this post声明给定义名称“Print_Titles”的行具有相同的效果。然后我可以通过OpenXML使用以下代码创建一个定义的名称:
SpreadsheetPrintingParts.FeedData()
注意事项:
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索引DefinedName.LocalSheetId
每个工作簿一次,但可以为不同的工作表包含多个Sheet.Id
个对象。