public TOC(CT_SdtBlock block) { this.block = block; CT_SdtPr sdtPr = block.AddNewSdtPr(); CT_DecimalNumber id = sdtPr.AddNewId(); id.val = ("4844945"); sdtPr.AddNewDocPartObj().AddNewDocPartGallery().val = ("Table of contents"); CT_SdtEndPr sdtEndPr = block.AddNewSdtEndPr(); CT_RPr rPr = sdtEndPr.AddNewRPr(); CT_Fonts fonts = rPr.AddNewRFonts(); fonts.asciiTheme = (ST_Theme.minorHAnsi); fonts.eastAsiaTheme = (ST_Theme.minorHAnsi); fonts.hAnsiTheme = (ST_Theme.minorHAnsi); fonts.cstheme = (ST_Theme.minorBidi); rPr.AddNewB().val = false; rPr.AddNewBCs().val = false; rPr.AddNewColor().val = ("auto"); rPr.AddNewSz().val = 24; rPr.AddNewSzCs().val = 24; CT_SdtContentBlock content = block.AddNewSdtContent(); CT_P p = content.AddNewP(); byte[] b = Encoding.Unicode.GetBytes("00EF7E24"); p.rsidR = b; p.rsidRDefault = b; p.AddNewPPr().AddNewPStyle().val = ("TOCHeading"); p.AddNewR().AddNewT().Value = ("Table of Contents"); }
public void MergeCells(int startIndex, int endIndex) { if (startIndex >= endIndex) { throw new ArgumentOutOfRangeException("Start index must be smaller than end index"); } if (startIndex < 0 || endIndex >= this.tableCells.Count) { throw new ArgumentOutOfRangeException("Invalid start index and end index"); } XWPFTableCell startCell = this.GetCell(startIndex); //remove merged cells for (int i = endIndex; i > startIndex; i--) { this.RemoveCell(i); } if (!startCell.GetCTTc().IsSetTcPr()) { startCell.GetCTTc().AddNewTcPr(); } CT_TcPr tcPr = startCell.GetCTTc().tcPr; if (tcPr.gridSpan == null) { tcPr.AddNewGridspan(); } CT_DecimalNumber gridspan = tcPr.gridSpan; gridspan.val = (endIndex - startIndex + 1).ToString(); }
public void SetColBandSize(int size) { CT_TblPr tblPr = GetTrPr(); CT_DecimalNumber colSize = tblPr.IsSetTblStyleColBandSize() ? tblPr.tblStyleColBandSize : tblPr.AddNewTblStyleColBandSize(); colSize.val = size.ToString(); }
public int GetColBandSize() { int size = 0; CT_TblPr tblPr = GetTrPr(); if (tblPr.IsSetTblStyleColBandSize()) { CT_DecimalNumber colSize = tblPr.tblStyleColBandSize; int.TryParse(colSize.val, out size); } return(size); }
public TOC(CT_SdtBlock block) { this.block = block; CT_SdtPr sdtPr = block.AddNewSdtPr(); CT_DecimalNumber id = sdtPr.AddNewId(); id.val = ("4844945"); sdtPr.AddNewDocPartObj().AddNewDocPartGallery().val = ("Table of Contents"); CT_SdtEndPr sdtEndPr = block.AddNewSdtEndPr(); CT_RPr rPr = sdtEndPr.AddNewRPr(); CT_Fonts fonts = rPr.AddNewRFonts(); fonts.asciiTheme = (ST_Theme.minorHAnsi); fonts.eastAsiaTheme = (ST_Theme.minorHAnsi); fonts.hAnsiTheme = (ST_Theme.minorHAnsi); fonts.cstheme = (ST_Theme.minorBidi); CT_SdtContentBlock content = block.AddNewSdtContent(); CT_P p = content.AddNewP(); byte[] b = Encoding.Unicode.GetBytes("00EF7E24"); p.rsidR = b; p.rsidRDefault = b; CT_PPr pPr = p.AddNewPPr(); pPr.AddNewPStyle().val = ("TOCHeading"); pPr.AddNewJc().val = ST_Jc.center; CT_R run = p.AddNewR(); run.AddNewRPr().AddNewSz().val = 48; run.AddNewT().Value = ("Table of Contents"); run.AddNewBr().type = ST_BrType.textWrapping; // line break // TOC Field p = content.AddNewP(); pPr = p.AddNewPPr(); pPr.AddNewPStyle().val = "TOC1"; pPr.AddNewRPr().AddNewNoProof(); run = p.AddNewR(); run.AddNewFldChar().fldCharType = ST_FldCharType.begin; run = p.AddNewR(); CT_Text text = run.AddNewInstrText(); text.space = "preserve"; text.Value = (" TOC \\h \\z "); p.AddNewR().AddNewFldChar().fldCharType = ST_FldCharType.separate; }
/// <summary> /// 加入标题定义 /// </summary> /// <param name="docxDocument"></param> /// <param name="strStyleId"></param> /// <param name="headingLevel"></param> private static void addCustomHeadingStyle(XWPFDocument docxDocument, String strStyleId, int headingLevel) { CT_Style ctStyle = new CT_Style(); ctStyle.styleId = strStyleId; CT_String styleName = new CT_String(); styleName.val = strStyleId; ctStyle.name = styleName; CT_DecimalNumber indentNumber = new CT_DecimalNumber(); indentNumber.val = BigInteger.ValueOf(headingLevel).ToString(); // lower number > style is more prominent in the formats bar ctStyle.uiPriority = indentNumber; CT_OnOff onoffnull = new CT_OnOff(); ctStyle.unhideWhenUsed = onoffnull; // style shows up in the formats bar ctStyle.qFormat = onoffnull; // style defines a heading of the given level CT_PPr ppr = new CT_PPr(); ppr.outlineLvl = indentNumber; ctStyle.pPr = ppr; XWPFStyle style = new XWPFStyle(ctStyle); // is a null op if already defined XWPFStyles styles = docxDocument.CreateStyles(); style.StyleType = ST_StyleType.paragraph; if (styles.GetStyle(strStyleId) == null) { styles.AddStyle(style); } }
public void AddCustomHeadingStyle(string name, int headingLevel, int outlineLevel, int ptSize = 12) { CT_Style ctStyle = ctStyles.AddNewStyle(); ctStyle.styleId = (name); CT_String styleName = new CT_String(); styleName.val = (name); ctStyle.name = (styleName); CT_DecimalNumber indentNumber = new CT_DecimalNumber(); indentNumber.val = headingLevel.ToString(); // lower number > style is more prominent in the formats bar ctStyle.uiPriority = (indentNumber); CT_OnOff onoffnull = new CT_OnOff(); ctStyle.unhideWhenUsed = (onoffnull); // style shows up in the formats bar ctStyle.qFormat = (onoffnull); // style defines a heading of the given level CT_PPr ppr = new CT_PPr(); ppr.outlineLvl = new CT_DecimalNumber() { val = outlineLevel.ToString() }; ctStyle.pPr = (ppr); CT_RPr rpr = new CT_RPr(); rpr.AddNewSz().val = (ulong)ptSize * 2; ctStyle.rPr = rpr; }
/// <summary> /// 创建章节 /// </summary> /// <param name="doc"></param> private void CreateChaptersAndSections(XWPFDocument doc) { using (var myEntity = new MyEntity()) { //读取模板 FileStream stream = File.OpenRead(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "模板\\施工说明书(模板).docx"); XWPFDocument readDoc = new XWPFDocument(stream); //创建段落 XWPFParagraph paragraph = doc.CreateParagraph(); paragraph.CreateRun().AddBreak();//新建页 for (int i = 0; i < leaderNodes.Count; i++) { LeaderNode leaderNode = leaderNodes[i]; paragraph = doc.CreateParagraph(); //创建段落 //行距 paragraph.setSpacingBetween(30, LineSpacingRule.EXACT); //固定值,30磅 //间距 paragraph.SpacingAfterLines = 8; //上 paragraph.SpacingBeforeLines = 8; //下 //对齐方式 paragraph.Alignment = ParagraphAlignment.BOTH; //两端对齐 //大纲级别 CT_DecimalNumber cT_DecimalNumber = new CT_DecimalNumber(); cT_DecimalNumber.val = "0级";//1级目录 paragraph.GetCTP().AddNewPPr().outlineLvl = cT_DecimalNumber; //标题信息 XWPFRun run = paragraph.CreateRun(); run.SetText((i + 1).ToString()); //1级 run.FontSize = 14; //字体大小 run.FontFamily = "Times New Roman"; //字体 run = paragraph.CreateRun(); run.SetText(" " + leaderNode.Name); //1级 run.FontSize = 14; //字体大小 run.FontFamily = "宋体"; //字体 //根据节点信息在数据库中查询 var se = (from s in myEntity.Section where s.name == leaderNode.Name select s).ToList(); Section section = se.First();//章节对象 //判断章节中是否存在内容 bool flag = IsContainTable(leaderNode.Name, doc, readDoc); if (flag) { //根据节点对象id信息在数据库内容表中查询 var contents = (from c in myEntity.ContentTab where c.section_id == section.Id select c).ToList(); if (contents.Count > 0) { foreach (ContentTab contentTab in contents) { paragraph = doc.CreateParagraph(); //创建段落 paragraph.IndentationFirstLine = MainForm.Indentation("宋体", 14, 4, new FontStyle()); //首行缩进 XWPFRun r = paragraph.CreateRun(); r.SetText(contentTab.content); r.FontFamily = "宋体"; r.FontSize = 14; } } } if (leaderNode.CentreNodeList != null) { //遍历二级目录 for (int j = 0; j < leaderNode.CentreNodeList.Count; j++) { CentreNode centreNode = leaderNode.CentreNodeList[j]; paragraph = doc.CreateParagraph(); //创建段落 //行距 paragraph.setSpacingBetween(30, LineSpacingRule.EXACT); //固定值,30磅 //对齐方式 paragraph.Alignment = ParagraphAlignment.BOTH; //两端对齐 //大纲级别 cT_DecimalNumber = new CT_DecimalNumber(); cT_DecimalNumber.val = "1级";//2级目录 paragraph.GetCTP().AddNewPPr().outlineLvl = cT_DecimalNumber; //标题信息 run = paragraph.CreateRun(); run.SetText((i + 1) + "." + (j + 1)); //2级 run.FontSize = 14; //字体大小 run.FontFamily = "Times New Roman"; //字体 run = paragraph.CreateRun(); run.SetText(" " + centreNode.Name); //2级 run.FontSize = 14; //字体大小 run.FontFamily = "宋体"; //字体 //根据节点信息在数据库中查询 se = (from s in myEntity.Section where s.name == centreNode.Name select s).ToList(); section = se.First();//章节对象 //判断章节中是否存在内容 flag = IsContainTable(centreNode.Name, doc, readDoc); if (flag) { //根据节点对象id信息在数据库内容表中查询 var contents = (from c in myEntity.ContentTab where c.section_id == section.Id select c).ToList(); if (contents.Count > 0) { foreach (ContentTab contentTab in contents) { paragraph = doc.CreateParagraph(); //创建段落 paragraph.IndentationFirstLine = MainForm.Indentation("宋体", 14, 4, new FontStyle()); //首行缩进 XWPFRun r = paragraph.CreateRun(); r.SetText(contentTab.content); r.FontFamily = "宋体"; r.FontSize = 14; } } } if (centreNode.LastNodeList != null) { //遍历三级目录 for (int k = 0; k < centreNode.LastNodeList.Count; k++) { LastNode lastNode = centreNode.LastNodeList[k]; paragraph = doc.CreateParagraph(); //创建段落 //行距 paragraph.setSpacingBetween(30, LineSpacingRule.EXACT); //固定值,30磅 //对齐方式 paragraph.Alignment = ParagraphAlignment.BOTH; //两端对齐 //大纲级别 cT_DecimalNumber = new CT_DecimalNumber(); cT_DecimalNumber.val = "2级";//3级目录 paragraph.GetCTP().AddNewPPr().outlineLvl = cT_DecimalNumber; //标题信息 run = paragraph.CreateRun(); run.SetText((i + 1) + "." + (j + 1) + "." + (k + 1)); //3级 run.FontSize = 14; //字体大小 run.FontFamily = "Times New Roman"; //字体 run = paragraph.CreateRun(); run.SetText(" " + lastNode.Name); //3级 run.FontSize = 14; //字体大小 run.FontFamily = "宋体"; //字体 //根据节点信息在数据库中查询 se = (from s in myEntity.Section where s.name == lastNode.Name select s).ToList(); section = se.First(); //章节对象 //判断章节中是否存在内容 flag = IsContainTable(lastNode.Name, doc, readDoc); if (flag) { //根据节点对象id信息在数据库内容表中查询 var contents = (from c in myEntity.ContentTab where c.section_id == section.Id select c).ToList(); if (contents.Count > 0) { foreach (ContentTab contentTab in contents) { paragraph = doc.CreateParagraph(); //创建段落 paragraph.IndentationFirstLine = MainForm.Indentation("宋体", 14, 4, new FontStyle()); //首行缩进 XWPFRun r = paragraph.CreateRun(); r.SetText(contentTab.content); r.FontFamily = "宋体"; r.FontSize = 14; } } } } } } } } stream.Close(); } }