OpenXml 项目符号列表 word 的属性
本文关键字:属性 word 列表 项目 符号 OpenXml | 更新日期: 2023-09-27 18:31:58
我正在使用 OpenXML for Word 文档生成项目符号列表,它工作得很好,但我需要在边距和项目符号字符、项目符号字符和段落之间设置缩进
NumberingProperties _bulletsNumberingProp = new NumberingProperties();
NumberingLevelReference _bulletNumberingLevelRef = new NumberingLevelReference();
_bulletNumberingLevelRef.Val = _level; // level comes here
NumberingId _bulletNumberingId = new NumberingId();
//if (_level != 3)
//{
//iParentID = TemplateElementID;
//_bulletNumberingId.Val = iParentID;
_bulletNumberingId.Val = TemplateElementID;
//}
//else
//{
// _bulletNumberingId.Val = _pId;
// iParentID = _pId;
//}
_bulletsNumberingProp.Append(_bulletNumberingLevelRef);
_bulletsNumberingProp.Append(_bulletNumberingId);
GenerateNumberingDefinitionPart(numberingPart, ctcObj, _pId, _level, numbering, TemplateElementID, iParentID);
这里生成编号列表的方法
private void GenerateNumberingDefinitionPart(NumberingDefinitionsPart numberingPart, CAPSTemplateClass ctcObj, int _pId, int _level, Numbering numbering, int tempElementId, int iParentID)
{
//iParentID = _pId;
iParentID = tempElementId;
string charUniCode = Convert.ToString(ctcObj.BulletData.BulletCharacterUnicode);
NumberingFormat _numberingFormat = new NumberingFormat();
switch (charUniCode)
{
case "49":
_numberingFormat.Val = NumberFormatValues.Decimal;
break;
case "65":
_numberingFormat.Val = NumberFormatValues.UpperLetter;
break;
case "97":
_numberingFormat.Val = NumberFormatValues.LowerLetter;
break;
case "73":
_numberingFormat.Val = NumberFormatValues.UpperRoman;
break;
case "105":
_numberingFormat.Val = NumberFormatValues.LowerRoman;
break;
}
AbstractNum abstractNum1 = new AbstractNum() { AbstractNumberId = iParentID }; //tempElementId
MultiLevelType multiLevelType1 = new MultiLevelType() { Val = MultiLevelValues.HybridMultilevel };
TemplateCode templateCode1 = new TemplateCode() { Val = "BCF81B36" };
Level level0 = new Level() { LevelIndex = 0 };
StartNumberingValue startNumberingValue0 = new StartNumberingValue() { Val = 1 };
NumberingFormat numberingFormat0 = new NumberingFormat();
numberingFormat0.Val = _numberingFormat.Val;
LevelText levelText0 = new LevelText() { Val = (ctcObj.BulletData.PrefixText + "%1" + ctcObj.BulletData.PostfixText) };
LevelJustification levelJustification0 = new LevelJustification() { Val = LevelJustificationValues.Left };
PreviousParagraphProperties previousParagraphProperties0 = new PreviousParagraphProperties();
Indentation indentation0 = new Indentation() { Start = "720", Hanging = "360" };
previousParagraphProperties0.Append(indentation0);
//Level lvl = SetNumBulletsLevel(_level, ctcObj);
//abstractNum1.Append();
level0.Append(startNumberingValue0);
level0.Append(numberingFormat0);
level0.Append(levelText0);
level0.Append(levelJustification0);
level0.Append(previousParagraphProperties0);
Level level1 = new Level() { LevelIndex = 1, TemplateCode = "04090019", Tentative = true };
StartNumberingValue startNumberingValue1 = new StartNumberingValue() { Val = 1 };
NumberingFormat numberingFormat1 = new NumberingFormat();
numberingFormat1.Val = _numberingFormat.Val;
LevelText levelText1 = new LevelText() { Val = (ctcObj.BulletData.PrefixText + "%2" + ctcObj.BulletData.PostfixText) };
LevelJustification levelJustification1 = new LevelJustification() { Val = LevelJustificationValues.Left };
//lvlrst.Append(
//level1.LevelRestart = level0;
PreviousParagraphProperties previousParagraphProperties1 = new PreviousParagraphProperties();
Indentation indentation1 = new Indentation() { Start = "1440", Hanging = "360" };
previousParagraphProperties1.Append(indentation1);
level1.Append(startNumberingValue1);
level1.Append(numberingFormat1);
level1.Append(levelText1);
level1.Append(levelJustification1);
level1.Append(previousParagraphProperties1);
//level1.Append(indentation1);
//LevelRestart lvlrestart = new LevelRestart();
//lvlrestart.Append(level0);
//level1.LevelRestart = lvlrestart;
Level level2 = new Level() { LevelIndex = 2, TemplateCode = "0409001B", Tentative = true };
StartNumberingValue startNumberingValue2 = new StartNumberingValue() { Val = 1 };
NumberingFormat numberingFormat2 = new NumberingFormat();
numberingFormat2.Val = _numberingFormat.Val;
LevelText levelText2 = new LevelText() { Val = (ctcObj.BulletData.PrefixText + "%3" + ctcObj.BulletData.PostfixText) };
LevelJustification levelJustification2 = new LevelJustification() { Val = LevelJustificationValues.Right };
PreviousParagraphProperties previousParagraphProperties2 = new PreviousParagraphProperties();
Indentation indentation2 = new Indentation() { Start = "2160", Hanging = "360" };
previousParagraphProperties2.Append(indentation2);
level2.Append(startNumberingValue2);
level2.Append(numberingFormat2);
level2.Append(levelText2);
level2.Append(levelJustification2);
level2.Append(previousParagraphProperties2);
//level2.Append(indentation2);
Level level3 = new Level() { LevelIndex = 3, TemplateCode = "0409000F", Tentative = true };
StartNumberingValue startNumberingValue3 = new StartNumberingValue() { Val = 1 };
NumberingFormat numberingFormat3 = new NumberingFormat();
numberingFormat3.Val = _numberingFormat.Val;
LevelText levelText3 = new LevelText() { Val = (ctcObj.BulletData.PrefixText + "%4" + ctcObj.BulletData.PostfixText) };
LevelJustification levelJustification3 = new LevelJustification() { Val = LevelJustificationValues.Left };
PreviousParagraphProperties previousParagraphProperties3 = new PreviousParagraphProperties();
Indentation indentation3 = new Indentation() { Start = "2880", Hanging = "360" };
previousParagraphProperties3.Append(indentation3);
level3.Append(startNumberingValue3);
level3.Append(numberingFormat3);
level3.Append(levelText3);
level3.Append(levelJustification3);
level3.Append(previousParagraphProperties3);
//level3.Append(indentation3);
Level level4 = new Level() { LevelIndex = 4, TemplateCode = "04090019", Tentative = true };
StartNumberingValue startNumberingValue4 = new StartNumberingValue() { Val = 1 };
NumberingFormat numberingFormat4 = new NumberingFormat();
numberingFormat4.Val = _numberingFormat.Val;
LevelText levelText4 = new LevelText() { Val = (ctcObj.BulletData.PrefixText + "%5" + ctcObj.BulletData.PostfixText) };
LevelJustification levelJustification4 = new LevelJustification() { Val = LevelJustificationValues.Left };
PreviousParagraphProperties previousParagraphProperties4 = new PreviousParagraphProperties();
Indentation indentation4 = new Indentation() { Start = "3600", Hanging = "360" };
previousParagraphProperties4.Append(indentation4);
level4.Append(startNumberingValue4);
level4.Append(numberingFormat4);
level4.Append(levelText4);
level4.Append(levelJustification4);
level4.Append(previousParagraphProperties4);
Level level5 = new Level() { LevelIndex = 5, TemplateCode = "0409001B", Tentative = true };
StartNumberingValue startNumberingValue5 = new StartNumberingValue() { Val = 1 };
NumberingFormat numberingFormat5 = new NumberingFormat();
numberingFormat5.Val = _numberingFormat.Val;
LevelText levelText5 = new LevelText() { Val = (ctcObj.BulletData.PrefixText + "%6" + ctcObj.BulletData.PostfixText) };
LevelJustification levelJustification5 = new LevelJustification() { Val = LevelJustificationValues.Right };
PreviousParagraphProperties previousParagraphProperties5 = new PreviousParagraphProperties();
Indentation indentation5 = new Indentation() { Start = "4320", Hanging = "180" };
previousParagraphProperties5.Append(indentation5);
level5.Append(startNumberingValue5);
level5.Append(numberingFormat5);
level5.Append(levelText5);
level5.Append(levelJustification5);
level5.Append(previousParagraphProperties5);
Level level6 = new Level() { LevelIndex = 6, TemplateCode = "0409000F", Tentative = true };
StartNumberingValue startNumberingValue6 = new StartNumberingValue() { Val = 1 };
NumberingFormat numberingFormat6 = new NumberingFormat();
numberingFormat6.Val = _numberingFormat.Val;
LevelText levelText6 = new LevelText() { Val = (ctcObj.BulletData.PrefixText + "%7" + ctcObj.BulletData.PostfixText) };
LevelJustification levelJustification6 = new LevelJustification() { Val = LevelJustificationValues.Left };
PreviousParagraphProperties previousParagraphProperties6 = new PreviousParagraphProperties();
Indentation indentation6 = new Indentation() { Start = "5040", Hanging = "360" };
previousParagraphProperties6.Append(indentation6);
level6.Append(startNumberingValue6);
level6.Append(numberingFormat6);
level6.Append(levelText6);
level6.Append(levelJustification6);
level6.Append(previousParagraphProperties6);
Level level7 = new Level() { LevelIndex = 7, TemplateCode = "04090019", Tentative = true };
StartNumberingValue startNumberingValue7 = new StartNumberingValue() { Val = 1 };
NumberingFormat numberingFormat7 = new NumberingFormat();
numberingFormat7.Val = _numberingFormat.Val;
LevelText levelText7 = new LevelText() { Val = (ctcObj.BulletData.PrefixText + "%8" + ctcObj.BulletData.PostfixText) };
LevelJustification levelJustification7 = new LevelJustification() { Val = LevelJustificationValues.Left };
PreviousParagraphProperties previousParagraphProperties7 = new PreviousParagraphProperties();
Indentation indentation7 = new Indentation() { Start = "5760", Hanging = "360" };
previousParagraphProperties7.Append(indentation7);
level7.Append(startNumberingValue7);
level7.Append(numberingFormat7);
level7.Append(levelText7);
level7.Append(levelJustification7);
level7.Append(previousParagraphProperties7);
Level level8 = new Level() { LevelIndex = 8, TemplateCode = "0409001B", Tentative = true };
StartNumberingValue startNumberingValue8 = new StartNumberingValue() { Val = 1 };
NumberingFormat numberingFormat8 = new NumberingFormat();
numberingFormat8.Val = _numberingFormat.Val;
LevelText levelText8 = new LevelText() { Val = (ctcObj.BulletData.PrefixText + "%9" + ctcObj.BulletData.PostfixText) };
LevelJustification levelJustification8 = new LevelJustification() { Val = LevelJustificationValues.Right };
PreviousParagraphProperties previousParagraphProperties8 = new PreviousParagraphProperties();
Indentation indentation8 = new Indentation() { Start = "6480", Hanging = "180" };
previousParagraphProperties8.Append(indentation8);
level8.Append(startNumberingValue8);
level8.Append(numberingFormat8);
level8.Append(levelText8);
level8.Append(levelJustification8);
level8.Append(previousParagraphProperties8);
abstractNum1.Append(multiLevelType1);
abstractNum1.Append(templateCode1);
abstractNum1.Append(level0);
abstractNum1.Append(level1);
abstractNum1.Append(level2);
abstractNum1.Append(level3);
abstractNum1.Append(level4);
abstractNum1.Append(level5);
abstractNum1.Append(level6);
abstractNum1.Append(level7);
abstractNum1.Append(level8);
//tempElementId = numbId;
NumberingInstance numberingInstance1 = new NumberingInstance() { NumberID = iParentID }; //tempElementId
AbstractNumId abstractNumId1 = new AbstractNumId() { Val = iParentID };
//numbId = numbId + 1;
numberingInstance1.Append(abstractNumId1);
numbering.Append(abstractNum1);
numInstance.Add(numberingInstance1);
}
默认情况下,我得到的结果如下
- 项目符号1
但是我需要在数字值之前和之后设置缩进,如下所示 块引用 1. 项目符号1
尝试手动在word中创建所需的结构,并在OpenXML生产力工具中打开它以获取代码。
您可以从这里获得开放的xml生产力工具以及Open XML SDK https://github.com/OfficeDev/Open-XML-SDK/releases/tag/v2.5
希望这有帮助。