Exemplo n.º 1
0
        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");
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        public void SetColBandSize(int size)
        {
            CT_TblPr         tblPr   = GetTrPr();
            CT_DecimalNumber colSize = tblPr.IsSetTblStyleColBandSize() ? tblPr.tblStyleColBandSize : tblPr.AddNewTblStyleColBandSize();

            colSize.val = size.ToString();
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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;
        }
Exemplo n.º 6
0
        /// <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);
            }
        }
Exemplo n.º 7
0
        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;
        }
Exemplo n.º 8
0
 /// <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();
     }
 }