예제 #1
0
 public XWPFTableCell(CT_Tc cell, XWPFTableRow tableRow, IBody part)
 {
     this.ctTc     = cell;
     this.part     = part;
     this.tableRow = tableRow;
     if (cell.GetPList().Count < 1)
     {
         cell.AddNewP();
     }
     this.bodyElements = new List <IBodyElement>();
     this.paragraphs   = new List <XWPFParagraph>();
     this.tables       = new List <XWPFTable>();
     foreach (object obj in this.ctTc.Items)
     {
         if (obj is CT_P)
         {
             XWPFParagraph xwpfParagraph = new XWPFParagraph((CT_P)obj, (IBody)this);
             this.paragraphs.Add(xwpfParagraph);
             this.bodyElements.Add((IBodyElement)xwpfParagraph);
         }
         if (obj is CT_Tbl)
         {
             XWPFTable xwpfTable = new XWPFTable((CT_Tbl)obj, (IBody)this);
             this.tables.Add(xwpfTable);
             this.bodyElements.Add((IBodyElement)xwpfTable);
         }
     }
 }
예제 #2
0
        /// <summary>
        /// 合并行、垂直合并列单元格
        /// </summary>
        /// <param name="table"></param>
        /// <param name="fromRow"></param>
        /// <param name="toRow"></param>
        /// <param name="colIndex"></param>
        public void MYMergeRows(XWPFTable table, int fromRow, int toRow, int colIndex)
        {
            for (int rowIndex = fromRow; rowIndex <= toRow; rowIndex++)
            {
                XWPFTableCell rowcell = table.GetRow(rowIndex).GetCell(colIndex);
                rowcell.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
                CT_Tc   cttc   = rowcell.GetCTTc();
                CT_TcPr ctTcPr = cttc.tcPr;
                if (ctTcPr == null)
                {
                    ctTcPr = cttc.AddNewTcPr();
                }

                if (rowIndex == fromRow)
                {
                    // The first merged cell is set with RESTART merge value
                    ctTcPr.AddNewVMerge().val = ST_Merge.restart;
                }
                else
                {
                    // Cells which join (merge) the first one, are set with CONTINUE
                    ctTcPr.AddNewVMerge().val = ST_Merge.@continue; //继续合并行
                }
                ctTcPr.AddNewVAlign().val = ST_VerticalJc.center;   //垂直
            }
        }
예제 #3
0
        /**
         * Get the TableCell which belongs to the TableCell
         */

        public XWPFTableCell GetTableCell(CT_Tc cell)
        {
            if (!(cell.Parent is CT_Row))
            {
                return(null);
            }
            CT_Row row = (CT_Row)cell.Parent;

            if (!(row.Parent is CT_Tbl))
            {
                return(null);
            }
            CT_Tbl    tbl   = (CT_Tbl)row.Parent;
            XWPFTable table = GetTable(tbl);

            if (table == null)
            {
                return(null);
            }
            XWPFTableRow tableRow = table.GetRow(row);

            if (tableRow == null)
            {
                return(null);
            }
            return(tableRow.GetTableCell(cell));
        }
예제 #4
0
 /**
  * Get the TableCell which belongs to the TableCell
  * @param cell
  */
 public XWPFTableCell GetTableCell(CT_Tc cell)
 {
     /*XmlCursor cursor = cell.NewCursor();
      * cursor.ToParent();
      * XmlObject o = cursor.Object;
      * if(!(o is CTRow)){
      *  return null;
      * }
      * CTRow row = (CTRow)o;
      * cursor.ToParent();
      * o = cursor.Object;
      * cursor.Dispose();
      * if(! (o is CTTbl)){
      *  return null;
      * }
      * CTTbl tbl = (CTTbl) o;
      * XWPFTable table = GetTable(tbl);
      * if(table == null){
      *  return null;
      * }
      * XWPFTableRow tableRow = table.GetRow(row);
      * if(row == null){
      *  return null;
      * }
      * return tableRow.GetTableCell(cell);*/
     throw new NotImplementedException();
 }
예제 #5
0
 /// <summary>
 /// 对合并单元格的首单元格进行设置,并居中对齐
 /// </summary>
 /// <param name="cttc"></param>
 /// <param name="ctPr"></param>
 /// <param name="mergeCellValue"></param>
 static void StartMergeRow(CT_Tc cttc, CT_TcPr ctPr, string mergeCellValue)
 {
     ctPr.AddNewVMerge().val = ST_Merge.restart;     //合并行
     ctPr.AddNewVAlign().val = ST_VerticalJc.center; //垂直居中
     cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;
     cttc.GetPList()[0].AddNewR().AddNewT().Value  = mergeCellValue;
 }
예제 #6
0
 public XWPFTableCell GetTableCell(CT_Tc cell)
 {
     if (cell == null || cell.Table == null)
     {
         return((XWPFTableCell)null);
     }
     return(this.GetTable(cell.Table)?.GetRow(cell.TableRow)?.GetTableCell(cell));
 }
예제 #7
0
        /**
         * Adds a new TableCell at the end of this tableRow
         */
        public XWPFTableCell AddNewTableCell()
        {
            CT_Tc         cell      = ctRow.AddNewTc();
            XWPFTableCell tableCell = new XWPFTableCell(cell, this, table.Body);

            tableCells.Add(tableCell);
            return(tableCell);
        }
예제 #8
0
        /// <summary>
        /// word 插入表格功能(13行2列)
        /// </summary>
        /// <param name="m_Docx">根文档</param>
        /// <param name="device_type">设备类型</param>
        /// <param name="kilometer_mark">公里标</param>
        /// <param name="side_direction">下行侧向</param>
        /// <param name="longitude">经度</param>
        /// <param name="latitude">纬度</param>
        private static void word_inster_table(XWPFDocument m_Docx, DbBean bean, int i = 1)
        {
            XWPFTable table  = m_Docx.CreateTable(12, 2);
            CT_Tbl    ctbl   = m_Docx.Document.body.GetTblArray()[i];
            CT_TblPr  ctblpr = ctbl.AddNewTblPr();

            ctblpr.jc     = new CT_Jc();
            ctblpr.jc.val = ST_Jc.center;

            table.Width = 3500;
            table.GetRow(0).GetCell(0).SetText("设备类型");
            table.GetRow(0).GetCell(1).SetText(bean.DeviceType);
            table.GetRow(1).GetCell(0).SetText("公里标");
            table.GetRow(1).GetCell(1).SetText(bean.KilometerMark);
            table.GetRow(2).GetCell(0).SetText("下行侧向");
            table.GetRow(2).GetCell(1).SetText(bean.SideDirection);
            table.GetRow(3).GetCell(0).SetText("距线路中心距离(m)");
            table.GetRow(4).GetCell(0).SetText("经度");
            table.GetRow(4).GetCell(1).SetText(bean.Longitude);
            table.GetRow(5).GetCell(0).SetText("纬度");
            table.GetRow(5).GetCell(1).SetText(bean.Latitude);
            table.GetRow(6).GetCell(0).SetText("杆塔类型");
            table.GetRow(6).GetCell(1).SetText(bean.TowerType);
            table.GetRow(7).GetCell(0).SetText("杆塔高度");
            table.GetRow(7).GetCell(1).SetText(bean.TowerHeight);
            table.GetRow(8).GetCell(0).SetText("天线1方向角");
            table.GetRow(8).GetCell(1).SetText(bean.AntennaDirection1);
            table.GetRow(9).GetCell(0).SetText("天线2方向角");
            table.GetRow(9).GetCell(1).SetText(bean.AntennaDirection2);
            table.GetRow(10).GetCell(0).SetText("天线3方向角");
            table.GetRow(10).GetCell(1).SetText(bean.AntennaDirection3);
            table.GetRow(11).GetCell(0).SetText("天线4方向角");
            table.GetRow(11).GetCell(1).SetText(bean.AntennaDirection4);
            CT_TcPr m_Pr = table.GetRow(2).GetCell(1).GetCTTc().AddNewTcPr();

            m_Pr.tcW      = new CT_TblWidth();
            m_Pr.tcW.w    = "3500";
            m_Pr.tcW.type = ST_TblWidth.dxa; //设置单元格宽度

            XWPFTableRow  m_Row = table.InsertNewTableRow(0);
            XWPFTableCell cell  = m_Row.CreateCell();
            CT_Tc         cttc  = cell.GetCTTc();
            CT_TcPr       ctPr  = cttc.AddNewTcPr();

            ctPr.gridSpan     = new CT_DecimalNumber();
            ctPr.gridSpan.val = "2";
            cttc.GetPList()[0].AddNewR().AddNewT().Value = "SITE 【序号】";

            word_insert_space(1, m_Docx, 100);
            word_insert_text(m_Docx, "宋体", 11, "SITE 【序号】勘站照片");
            word_insert_text(m_Docx, "宋体", 11, "(3-10张照片)");

            word_insert_space(1, m_Docx, 100);
        }
예제 #9
0
 /**
  * returns the XWPFTableCell which belongs to the CTTC cell
  * if there is no XWPFTableCell which belongs to the parameter CTTc cell null will be returned
  */
 public XWPFTableCell GetTableCell(CT_Tc cell)
 {
     for (int i = 0; i < tableCells.Count; i++)
     {
         if (tableCells[(i)].GetCTTc() == cell)
         {
             return(tableCells[(i)]);
         }
     }
     return(null);
 }
예제 #10
0
 public XWPFTableCell GetTableCell(CT_Tc cell)
 {
     for (int index = 0; index < this.tableCells.Count; ++index)
     {
         if (this.tableCells[index].GetCTTc() == cell)
         {
             return(this.tableCells[index]);
         }
     }
     return((XWPFTableCell)null);
 }
예제 #11
0
        public void TestGetText()
        {
            XWPFDocument doc       = new XWPFDocument();
            CT_Tbl       table     = new CT_Tbl();
            CT_Row       row       = table.AddNewTr();
            CT_Tc        cell      = row.AddNewTc();
            CT_P         paragraph = cell.AddNewP();
            CT_R         run       = paragraph.AddNewR();
            CT_Text      text      = run.AddNewT();

            text.Value = ("finally I can Write!");

            XWPFTable xtab = new XWPFTable(table, doc);

            Assert.AreEqual("finally I can Write!\n", xtab.GetText());
        }
예제 #12
0
        /**
         * If a table cell does not include at least one block-level element, then this document shall be considered corrupt
         */
        public XWPFTableCell(CT_Tc cell, XWPFTableRow tableRow, IBody part)
        {
            this.ctTc     = cell;
            this.part     = part;
            this.tableRow = tableRow;
            // NB: If a table cell does not include at least one block-level element, then this document shall be considered corrupt.
            if (cell.GetPList().Count < 1)
            {
                cell.AddNewP();
            }
            bodyElements = new List <IBodyElement>();
            paragraphs   = new List <XWPFParagraph>();
            tables       = new List <XWPFTable>();
            foreach (object o in ctTc.Items)
            {
                if (o is CT_P)
                {
                    XWPFParagraph p = new XWPFParagraph((CT_P)o, this);
                    paragraphs.Add(p);
                    bodyElements.Add(p);
                }
                if (o is CT_Tbl)
                {
                    XWPFTable t = new XWPFTable((CT_Tbl)o, this);
                    tables.Add(t);
                    bodyElements.Add(t);
                }
            }

            /*
             *  XmlCursor cursor = ctTc.NewCursor();
             *  cursor.SelectPath("./*");
             *  while (cursor.ToNextSelection()) {
             *      XmlObject o = cursor.Object;
             *      if (o is CTP) {
             *          XWPFParagraph p = new XWPFParagraph((CTP)o, this);
             *          paragraphs.Add(p);
             *          bodyElements.Add(p);
             *      }
             *      if (o is CTTbl) {
             *          XWPFTable t = new XWPFTable((CTTbl)o, this);
             *          tables.Add(t);
             *          bodyElements.Add(t);
             *      }
             *  }
             *  cursor.Dispose();*/
        }
예제 #13
0
        public void Test54099()
        {
            XWPFDocument  doc     = new XWPFDocument();
            CT_Tbl        ctTable = new CT_Tbl();
            XWPFTable     table   = new XWPFTable(ctTable, doc);
            XWPFTableRow  tr      = table.GetRow(0);
            XWPFTableCell cell    = tr.GetCell(0);

            CT_Tc     ctTc   = cell.GetCTTc();
            CT_TcPr   tcPr   = ctTc.AddNewTcPr();
            CT_HMerge hMerge = tcPr.AddNewHMerge();

            hMerge.val = (ST_Merge.restart);

            CT_TcBorders tblBorders = tcPr.AddNewTcBorders();
            CT_VMerge    vMerge     = tcPr.AddNewVMerge();
        }
예제 #14
0
 /**
  * If a table cell does not include at least one block-level element, then this document shall be considered corrupt
  */
 public XWPFTableCell(CT_Tc cell, XWPFTableRow tableRow, IBody part)
 {
     this.ctTc = cell;
     this.part = part;
     this.tableRow = tableRow;
     // NB: If a table cell does not include at least one block-level element, then this document shall be considered corrupt.
     if(cell.GetPList().Count<1)
         cell.AddNewP();
     bodyElements = new List<IBodyElement>();
     paragraphs = new List<XWPFParagraph>();
     tables = new List<XWPFTable>();
     foreach (object o in ctTc.Items)
     {
         if (o is CT_P)
         {
             XWPFParagraph p = new XWPFParagraph((CT_P)o, this);
             paragraphs.Add(p);
             bodyElements.Add(p);
         }
         if (o is CT_Tbl)
         {
             XWPFTable t = new XWPFTable((CT_Tbl)o, this);
             tables.Add(t);
             bodyElements.Add(t);
         }
     }
 /*
     XmlCursor cursor = ctTc.NewCursor();
     cursor.SelectPath("./*");
     while (cursor.ToNextSelection()) {
         XmlObject o = cursor.Object;
         if (o is CTP) {
             XWPFParagraph p = new XWPFParagraph((CTP)o, this);
             paragraphs.Add(p);
             bodyElements.Add(p);
         }
         if (o is CTTbl) {
             XWPFTable t = new XWPFTable((CTTbl)o, this);
             tables.Add(t);
             bodyElements.Add(t);
         }
     }
     cursor.Dispose();*/
 }
예제 #15
0
        private static XWPFTableCell SetCell(XWPFTableCell cell, string text, int width, string color = "", bool isCenter = true, int fontSize = 0, bool isBold = false)
        {
            CT_Tc   cttc = cell.GetCTTc();
            CT_TcPr ctpr = cttc.AddNewTcPr();

            //垂直居中
            ctpr.AddNewVAlign().val = ST_VerticalJc.center;
            //设置单元格列宽
            ctpr.tcW      = new CT_TblWidth();
            ctpr.tcW.w    = width.ToString();
            ctpr.tcW.type = ST_TblWidth.dxa;
            //设置单元格背景色
            if (!string.IsNullOrEmpty(color))
            {
                cell.SetColor(color);
            }
            //设置文本
            text = text == "PRI" ? "Y" : text;
            text = text == "YES" ? "Y" : text;
            text = text == "NO" ? "N" : text;
            text = text == "CURRENT_TIMESTAMP" ? "now()" : text;
            cell.RemoveParagraph(0);
            XWPFParagraph gp = cell.AddParagraph();

            if (isCenter)
            {
                //水平居中
                gp.Alignment = ParagraphAlignment.CENTER;
            }
            //文字格式
            gp.Style = "NoSpacing";
            XWPFRun gr = gp.CreateRun();

            if (fontSize > 0)
            {
                gr.FontSize = fontSize;
            }
            gr.IsBold = isBold;
            gr.SetText(text);

            return(cell);
        }
예제 #16
0
        /**
         * If a table cell does not include at least one block-level element, then this document shall be considered corrupt
         */

        public XWPFTableCell(CT_Tc cell, XWPFTableRow tableRow, IBody part)
        {
            this.ctTc     = cell;
            this.part     = part;
            this.tableRow = tableRow;
            // NB: If a table cell does not include at least one block-level element, then this document shall be considered corrupt.
            if (cell.GetPList().Count < 1)
            {
                cell.AddNewP();
            }
            bodyElements = new List <IBodyElement>();
            paragraphs   = new List <XWPFParagraph>();
            tables       = new List <XWPFTable>();
            foreach (object o in ctTc.Items)
            {
                if (o is CT_P)
                {
                    XWPFParagraph p = new XWPFParagraph((CT_P)o, this);
                    paragraphs.Add(p);
                    bodyElements.Add(p);
                }
                if (o is CT_Tbl)
                {
                    XWPFTable t = new XWPFTable((CT_Tbl)o, this);
                    tables.Add(t);
                    bodyElements.Add(t);
                }
                if (o is CT_SdtBlock)
                {
                    XWPFSDT c = new XWPFSDT((CT_SdtBlock)o, this);
                    bodyElements.Add(c);
                }
                if (o is CT_SdtRun)
                {
                    XWPFSDT c = new XWPFSDT((CT_SdtRun)o, this);
                    bodyElements.Add(c);
                }
            }
        }
예제 #17
0
 /**
  * If a table cell does not include at least one block-level element, then this document shall be considered corrupt
  */
 public XWPFTableCell(CT_Tc cell, XWPFTableRow tableRow, IBody part)
 {
     this.ctTc = cell;
     this.part = part;
     this.tableRow = tableRow;
     // NB: If a table cell does not include at least one block-level element, then this document shall be considered corrupt.
     if(cell.GetPList().Count<1)
         cell.AddNewP();
     bodyElements = new List<IBodyElement>();
     paragraphs = new List<XWPFParagraph>();
     tables = new List<XWPFTable>();
     foreach (object o in ctTc.Items)
     {
         if (o is CT_P)
         {
             XWPFParagraph p = new XWPFParagraph((CT_P)o, this);
             paragraphs.Add(p);
             bodyElements.Add(p);
         }
         if (o is CT_Tbl)
         {
             XWPFTable t = new XWPFTable((CT_Tbl)o, this);
             tables.Add(t);
             bodyElements.Add(t);
         }
         if (o is CT_SdtBlock)
         {
             XWPFSDT c = new XWPFSDT((CT_SdtBlock)o, this);
             bodyElements.Add(c);
         }
         if (o is CT_SdtRun)
         {
             XWPFSDT c = new XWPFSDT((CT_SdtRun)o, this);
             bodyElements.Add(c);
         }
     }
 }
예제 #18
0
 public XWPFTableCell GetTableCell(CT_Tc cell)
 {
     throw new NotImplementedException();
 }
예제 #19
0
 /**
  * Get the TableCell which belongs to the TableCell
  */
 public XWPFTableCell GetTableCell(CT_Tc cell)
 {
     /*XmlCursor cursor = cell.NewCursor();
     cursor.ToParent();
     XmlObject o = cursor.Object;
     if(!(o is CTRow)){
         return null;
     }
     CTRow row = (CTRow)o;
     cursor.ToParent();
     o = cursor.Object;
     cursor.Dispose();
     if(! (o is CTTbl)){
         return null;
     }
     CTTbl tbl = (CTTbl) o;
     XWPFTable table = GetTable(tbl);
     if(table == null){
         return null;
     }
     XWPFTableRow tableRow = table.GetRow(row);
     if(tableRow == null){
         return null;
     }
     return tableRow.GetTableCell(cell);*/
     throw new NotImplementedException();
 }
예제 #20
0
 /// <summary>
 /// 对合并单元格进行前处理
 /// </summary>
 /// <param name="table"></param>
 /// <param name="m_NewRow"></param>
 /// <param name="m_Row"></param>
 /// <param name="cell"></param>
 /// <param name="cttc"></param>
 /// <param name="ctPr"></param>
 static void DealWithMergeCell(XWPFTable table, out CT_Row m_NewRow, out XWPFTableRow m_Row, out XWPFTableCell cell, out CT_Tc cttc, out CT_TcPr ctPr)
 {
     m_NewRow = new CT_Row();
     m_Row    = new XWPFTableRow(m_NewRow, table);
     table.AddRow(m_Row);
     cell = m_Row.CreateCell();
     cttc = cell.GetCTTc();
     ctPr = cttc.AddNewTcPr();
 }
예제 #21
0
 /// <summary>
 /// 创建评估结果单元格
 /// </summary>
 /// <param name="table">评估表格</param>
 void CreateAssessmentResultsCell(XWPFTable table, out CT_Row m_NewRow, out XWPFTableRow m_Row, out XWPFTableCell cell, out CT_Tc cttc, out CT_TcPr ctPr)
 {
     //评估结果表头
     CreateAssessmentResultHeaderAndSetValue(table, out m_NewRow, out m_Row, out cell, out cttc, out ctPr);
     //创建位移评估结果单元格
     CreateDisplacementAssessmentResultCell(table, out m_NewRow, out m_Row, out cell, out cttc, out ctPr);
     //创建应力评估结果单元格
     CreateStressAssessmentResultCell(table, out m_NewRow, out m_Row, out cell, out cttc, out ctPr);
     //创建索力评估结果单元格
     CreateCableForceAssessmentResultCell(table, out m_NewRow, out m_Row, out cell, out cttc, out ctPr);
 }
예제 #22
0
 //创建“评估结果”表格表头部分
 void CreateAssessmentResultHeaderAndSetValue(XWPFTable table, out CT_Row m_NewRow, out XWPFTableRow m_Row, out XWPFTableCell cell, out CT_Tc cttc, out CT_TcPr ctPr)
 {
     DealWithMergeCell(table, out m_NewRow, out m_Row, out cell, out cttc, out ctPr);
     StartMergeRow(cttc, ctPr, "评估结果");
     cell = m_Row.CreateCell();
     SetBoldFontCell(cell, "评估项目");
     SetAlign(cell);
     cell = m_Row.CreateCell();
     SetBoldFontCell(cell, "评估结论");
     SetAlign(cell);
     cell = m_Row.CreateCell();
     cell.SetText("");
     SetAlign(cell);
     cell = m_Row.CreateCell();
     SetBoldFontCell(cell, "建议");
     SetAlign(cell);
 }
예제 #23
0
 /**
  * returns the XWPFTableCell which belongs to the CTTC cell
  * if there is no XWPFTableCell which belongs to the parameter CTTc cell null will be returned
  */
 public XWPFTableCell GetTableCell(CT_Tc cell)
 {
     for (int i = 0; i < tableCells.Count; i++)
     {
         if (tableCells[(i)].GetCTTc() == cell) 
             return tableCells[(i)];
     }
     return null;
 }
예제 #24
0
        /// <summary>
        /// 测试合并单元格
        /// </summary>
        /// <param name="file"></param>
        private void NPOITestMerge(string file)
        {
            #region
            XWPFDocument doc;
            using (FileStream fileread = File.OpenRead(file))
            {
                doc = new XWPFDocument(fileread);
            }
            #endregion

            foreach (XWPFTable table in doc.Tables)
            {
                XWPFTableRow row = table.GetRow(0);

                #region 老版NPOI(2.0)行合并【所有行】
                for (int c = 0; c < row.GetTableCells().Count; c++)
                {
                    XWPFTableCell cell = row.GetTableCells()[c];
                    CT_Tc         tc   = cell.GetCTTc();
                    if (tc.tcPr == null)
                    {
                        tc.AddNewTcPr();
                    }
                    if (c == 0)
                    {
                        tc.tcPr.AddNewHMerge().val = ST_Merge.restart;
                    }
                    else
                    {
                        tc.tcPr.AddNewHMerge().val = ST_Merge.@continue;
                    }
                }
                #endregion

                #region //行合并【0~2列】(有错?)
                //row.MergeCells(0, 2);
                #endregion

                #region //列合并【0~2行】(有错?)
                //for (int r = 0; r < 2; r++)
                //{
                //    XWPFTableCell cell = table.GetRow(r).GetTableCells()[0];
                //    CT_Tc tc = cell.GetCTTc();
                //    if (tc.tcPr == null)
                //    {
                //        tc.AddNewTcPr();
                //    }
                //    if (r == 0)
                //    {
                //        tc.tcPr.AddNewVMerge().val = ST_Merge.restart;
                //    }
                //    else
                //    {
                //        tc.tcPr.AddNewVMerge().val = ST_Merge.@continue;
                //    }
                //}
                #endregion
            }

            #region 保存Word
            FileStream filewrite = new FileStream(file, FileMode.Create, FileAccess.Write);
            try
            {
                doc.Write(filewrite);
            }
            catch (Exception x)
            {
                lblStatus.Text = x.Message;
            }
            finally
            {
                filewrite.Close();
            }
            #endregion
        }
예제 #25
0
        private void NPOITestFillData(string file)
        {
            #region 读取Word
            XWPFDocument doc;
            using (FileStream fileread = File.OpenRead(file))
            {
                doc = new XWPFDocument(fileread);
            }
            #endregion

            List <string>[] data = new List <string> [3];
            #region 组织填充数据
            List <string> a = new List <string>();
            List <string> b = new List <string>();
            List <string> c = new List <string>();
            a.Add("1.1");
            a.Add("1.2");
            a.Add("1.3");
            a.Add("1.4");
            a.Add("1.5");
            a.Add("1.6");
            a.Add("1.7");
            b.Add("2.1");
            b.Add("2.2");
            b.Add("2.3");
            b.Add("2.4");
            b.Add("2.5");
            b.Add("2.6");
            c.Add("3.1");
            c.Add("3.2");
            c.Add("3.3");
            c.Add("3.4");
            c.Add("3.5");
            c.Add("3.6");
            c.Add("3.7");
            c.Add("3.8");
            c.Add("3.9");
            data[0] = a;
            data[1] = b;
            data[2] = c;
            #endregion

            WordTable wt = new WordTable(data);

            wt.CaptionLineCount = 2;    //标题行数

            XWPFTable table = LocationTable(doc, "本年发生的非同一控制下企业合并情况");

            if (wt.ObjectData != null)
            {
                for (int i = 0; i < wt.ObjectData.Length + wt.CaptionLineCount; i++)
                {
                    if (i >= wt.CaptionLineCount)
                    {
                        XWPFTableRow row;
                        string[]     rowdata = wt.ObjectData[i - wt.CaptionLineCount].ToArray <string>();
                        if (i < table.Rows.Count)
                        {
                            row = table.GetRow(i);
                            row.GetCTRow().AddNewTrPr().AddNewTrHeight().val = 397;
                            row.GetCTRow().trPr.GetTrHeightArray(0);
                            for (int n = 0; n < rowdata.Length; n++)
                            {
                                XWPFTableCell cell = row.GetCell(n);
                                //模板中的单元格少时,接收数据将会部分丢失
                                //也可以在下边if后添加else在该行后补充单元格
                                //按接收数据循环,所以单元格数多于接收数据时不需要另做处理,该行后边的部分单元格无法补填充
                                if (cell != null)
                                {
                                    //SetText是追加内容,所以要先删除单元格内容(删除单元格内所有段落)再写入
                                    for (int p = 0; p < cell.Paragraphs.Count; p++)
                                    {
                                        cell.RemoveParagraph(p);
                                    }
                                    for (int t = 0; t < cell.Tables.Count; t++)
                                    {
                                        //表格删除
                                        //cell.RemoveTable(t);
                                    }
                                    cell.SetText(rowdata[n]);
                                }
                            }
                        }
                        else
                        {
                            //添加新行
                            //row = table.InsertNewTableRow(table.Rows.Count - 1);

                            row = new XWPFTableRow(new CT_Row(), table);
                            row.GetCTRow().AddNewTrPr().AddNewTrHeight().val = 100;
                            table.AddRow(row);

                            for (int n = 0; n < rowdata.Length; n++)
                            {
                                XWPFTableCell cell = row.CreateCell();
                                CT_Tc         tc   = cell.GetCTTc();
                                CT_TcPr       pr   = tc.AddNewTcPr();
                                tc.GetPList()[0].AddNewR().AddNewT().Value = rowdata[n];
                            }
                        }
                    }
                }
            }

            #region 保存Word
            FileStream filewrite = new FileStream(file, FileMode.Create, FileAccess.Write);
            try
            {
                doc.Write(filewrite);
            }
            catch (Exception x)
            {
                lblStatus.Text = x.Message;
            }
            finally
            {
                filewrite.Close();
            }
            #endregion
        }
예제 #26
0
        private static void word_inster_table(XWPFDocument m_Docx, OutputData bean, int i, String photoPathName)
        {
            XWPFTable table  = m_Docx.CreateTable(12, 2);
            CT_Tbl    ctbl   = m_Docx.Document.body.GetTblArray()[i];
            CT_TblPr  ctblpr = ctbl.AddNewTblPr();

            ctblpr.jc     = new CT_Jc();
            ctblpr.jc.val = ST_Jc.center;

            table.Width = 3500;
            table.GetRow(0).GetCell(0).SetText("设备类型");
            table.GetRow(0).GetCell(1).SetText(bean.DeviceType);
            table.GetRow(1).GetCell(0).SetText("公里标");
            table.GetRow(1).GetCell(1).SetText(bean.KilometerMark);
            table.GetRow(2).GetCell(0).SetText("下行侧向");
            table.GetRow(2).GetCell(1).SetText(bean.SideDirection);
            table.GetRow(3).GetCell(0).SetText("距线路中心距离(m)");
            table.GetRow(4).GetCell(0).SetText("经度");
            table.GetRow(4).GetCell(1).SetText(bean.Longitude);
            table.GetRow(5).GetCell(0).SetText("纬度");
            table.GetRow(5).GetCell(1).SetText(bean.Latitude);
            table.GetRow(6).GetCell(0).SetText("杆塔类型");
            table.GetRow(6).GetCell(1).SetText(bean.TowerType);
            table.GetRow(7).GetCell(0).SetText("杆塔高度");
            table.GetRow(7).GetCell(1).SetText(bean.TowerHeight);
            table.GetRow(8).GetCell(0).SetText("天线1方向角");
            table.GetRow(8).GetCell(1).SetText(bean.AntennaDirection1);
            table.GetRow(9).GetCell(0).SetText("天线2方向角");
            table.GetRow(9).GetCell(1).SetText(bean.AntennaDirection2);
            table.GetRow(10).GetCell(0).SetText("天线3方向角");
            table.GetRow(10).GetCell(1).SetText(bean.AntennaDirection3);
            table.GetRow(11).GetCell(0).SetText("天线4方向角");
            table.GetRow(11).GetCell(1).SetText(bean.AntennaDirection4);
            CT_TcPr m_Pr = table.GetRow(2).GetCell(1).GetCTTc().AddNewTcPr();

            m_Pr.tcW      = new CT_TblWidth();
            m_Pr.tcW.w    = "3500";
            m_Pr.tcW.type = ST_TblWidth.dxa; //设置单元格宽度

            XWPFTableRow  m_Row = table.InsertNewTableRow(0);
            XWPFTableCell cell  = m_Row.CreateCell();
            CT_Tc         cttc  = cell.GetCTTc();
            CT_TcPr       ctPr  = cttc.AddNewTcPr();

            ctPr.gridSpan     = new CT_DecimalNumber();
            ctPr.gridSpan.val = "2";
            cttc.GetPList()[0].AddNewR().AddNewT().Value = "SITE: " + bean.MarkerId;


            System.IO.DirectoryInfo dir   = new System.IO.DirectoryInfo(photoPathName);
            System.IO.FileInfo[]    files = dir.GetFiles();
            foreach (System.IO.FileInfo file in files)
            {
                FileStream gfs   = new FileStream(photoPathName + "\\" + file.Name, FileMode.Open, FileAccess.Read);
                Image      image = Image.FromFile(photoPathName + "\\" + file.Name);
                Double     ratio = (Double)image.Width / (Double)image.Height;
                image.Dispose();
                XWPFParagraph gp = m_Docx.CreateParagraph();
                gp.SetAlignment(ParagraphAlignment.CENTER);
                XWPFRun gr = gp.CreateRun();

                if (ratio > 1)
                {
                    gr.AddPicture(gfs, (int)PictureType.JPEG, file.Name, 3555556, 2000000);
                }
                else
                {
                    gr.AddPicture(gfs, (int)PictureType.JPEG, file.Name, 2000000, 3555556);
                }
                gfs.Close();
            }

            word_insert_space(3, m_Docx, 100);
        }
예제 #27
0
파일: XWPFDocument.cs 프로젝트: eatage/npoi
        /**
         * Get the TableCell which belongs to the TableCell
         * @param cell
         */
        public XWPFTableCell GetTableCell(CT_Tc cell)
        {
            if (cell == null|| !(cell.Parent is CT_Row))
                return null;

            object parent2 = ((CT_Row)cell.Parent).Parent;
            if ( parent2== null || !(parent2 is CT_Tbl))
                return null;
            XWPFTable table = GetTable((CT_Tbl)parent2);
            if (table == null)
            {
                return null;
            }
            XWPFTableRow tableRow = table.GetRow((CT_Row)cell.Parent);
            if (tableRow == null)
            {
                return null;
            }
            return tableRow.GetTableCell(cell);
        }
예제 #28
0
        /**
         * Get the TableCell which belongs to the TableCell
         * @param cell
         */
        public XWPFTableCell GetTableCell(CT_Tc cell)
        {
            /*XmlCursor cursor = cell.NewCursor();
            cursor.ToParent();
            XmlObject o = cursor.Object;
            if(!(o is CTRow)){
                return null;
            }
            CTRow row = (CTRow)o;
            cursor.ToParent();
            o = cursor.Object;
            cursor.Dispose();
            if(! (o is CTTbl)){
                return null;
            }
            CTTbl tbl = (CTTbl) o;
            XWPFTable table = GetTable(tbl);
            if(table == null){
                return null;
            }
            XWPFTableRow tableRow = table.GetRow(row);
            if(row == null){
                return null;
            }
            return tableRow.GetTableCell(cell);
             */
            if (cell == null|| !(cell.Parent is CT_Row))
                return null;

            object parent2 = ((CT_Row)cell.Parent).Parent;
            if ( parent2== null || !(parent2 is CT_Tbl))
                return null;
            XWPFTable table = GetTable((CT_Tbl)parent2);
            if (table == null)
            {
                return null;
            }
            XWPFTableRow tableRow = table.GetRow((CT_Row)cell.Parent);
            if (tableRow == null)
            {
                return null;
            }
            return tableRow.GetTableCell(cell);
        }
예제 #29
0
        void CreateExceptionRecordsCell(ReportDownloadModel Datas, XWPFTable table, out CT_Row m_NewRow, out XWPFTableRow m_Row, out XWPFTableCell cell, out CT_Tc cttc, out CT_TcPr ctPr)
        {
            DealWithMergeCell(table, out m_NewRow, out m_Row, out cell, out cttc, out ctPr);
            StartMergeRow(cttc, ctPr, "异常记录");
            cell = m_Row.CreateCell();
            SetBoldFontCell(cell, "检测类型");
            SetAlign(cell);
            cell = m_Row.CreateCell();
            SetBoldFontCell(cell, "测点编号");
            SetAlign(cell);
            cell = m_Row.CreateCell();
            SetBoldFontCell(cell, "测点位置");
            SetAlign(cell);
            cell = m_Row.CreateCell();
            SetBoldFontCell(cell, "异常次数");
            SetAlign(cell);

            for (int i = 1; i <= Datas.ExceptionRecordNumber; i++)
            {
                m_NewRow = new CT_Row();
                m_Row    = new XWPFTableRow(m_NewRow, table);
                table.AddRow(m_Row);
                cell = m_Row.CreateCell();
                cttc = cell.GetCTTc();
                ctPr = cttc.AddNewTcPr();
                ctPr.AddNewVMerge().val = ST_Merge.@continue;//合并行
                //横向创建4个单元格
                for (int k = 1; k < 5; k++)
                {
                    cell = m_Row.CreateCell();
                    SetAlign(cell);
                }
            }
        }
예제 #30
0
        protected void Button1_Click(object sender, EventArgs e)
        {
            //图片位置
            String       m_PicPath = @"C:\ttt.jpeg";
            FileStream   gfs       = null;
            MemoryStream ms        = new MemoryStream();
            XWPFDocument m_Docx    = new XWPFDocument();

            //页面设置
            //A4:W=11906,h=16838
            //CT_SectPr m_SectPr = m_Docx.Document.body.AddNewSectPr();
            m_Docx.Document.body.sectPr = new CT_SectPr();
            CT_SectPr m_SectPr = m_Docx.Document.body.sectPr;

            //页面设置A4纵向
            m_SectPr.pgSz.h = (ulong)16838;
            m_SectPr.pgSz.w = (ulong)11906;
            XWPFParagraph gp = m_Docx.CreateParagraph();
            // gp.GetCTPPr().AddNewJc().val = ST_Jc.center; //水平居中
            XWPFRun gr = gp.CreateRun();

            gr.GetCTR().AddNewRPr().AddNewRFonts().ascii    = "黑体";
            gr.GetCTR().AddNewRPr().AddNewRFonts().eastAsia = "黑体";
            gr.GetCTR().AddNewRPr().AddNewRFonts().hint     = ST_Hint.eastAsia;
            gr.GetCTR().AddNewRPr().AddNewSz().val          = (ulong)44; //2号字体
            gr.GetCTR().AddNewRPr().AddNewSzCs().val        = (ulong)44;
            gr.GetCTR().AddNewRPr().AddNewB().val           = true;      //加粗
            gr.GetCTR().AddNewRPr().AddNewColor().val       = "red";     //字体颜色
            gr.SetText("NPOI创建Word2007Docx");
            gp = m_Docx.CreateParagraph();
            //gp.GetCTPPr().AddNewJc().val = ST_Jc.both;
            // gp.IndentationFirstLine = Indentation("宋体", 21, 2, FontStyle.Regular);//段首行缩进2字符
            gp.IndentationFirstLine = 15;
            gr = gp.CreateRun();
            CT_RPr   rpr    = gr.GetCTR().AddNewRPr();
            CT_Fonts rfonts = rpr.AddNewRFonts();

            rfonts.ascii    = "宋体";
            rfonts.eastAsia = "宋体";
            rpr.AddNewSz().val   = (ulong)21;//5号字体
            rpr.AddNewSzCs().val = (ulong)21;
            gr.SetText("NPOI,顾名思义,就是POI的.NET版本。那POI又是什么呢?POI是一套用Java写成的库,能够帮助开 发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等 。目前POI的稳定版本中支持Excel文件格式(xls和xlsx),其他的都属于不稳定版本(放在poi的scrachpad目录 中)。");
            //创建表
            XWPFTable table     = m_Docx.CreateTable(1, 4);              //创建一行4列表
            CT_Tbl    m_CTTbl   = m_Docx.Document.body.GetTblArray()[0]; //获得文档第一张表
            CT_TblPr  m_CTTblPr = m_CTTbl.AddNewTblPr();

            m_CTTblPr.AddNewTblW().w    = "2000";              //表宽
            m_CTTblPr.AddNewTblW().type = ST_TblWidth.dxa;
            m_CTTblPr.tblpPr               = new CT_TblPPr();  //表定位
            m_CTTblPr.tblpPr.tblpX         = "4003";           //表左上角坐标
            m_CTTblPr.tblpPr.tblpY         = "365";
            m_CTTblPr.tblpPr.tblpXSpec     = ST_XAlign.center; //若不为“Null”,则优先tblpX,即表由tblpXSpec定位
            m_CTTblPr.tblpPr.tblpYSpec     = ST_YAlign.center; //若不为“Null”,则优先tblpY,即表由tblpYSpec定位
            m_CTTblPr.tblpPr.leftFromText  = (ulong)180;
            m_CTTblPr.tblpPr.rightFromText = (ulong)180;
            m_CTTblPr.tblpPr.vertAnchor    = ST_VAnchor.text;
            m_CTTblPr.tblpPr.horzAnchor    = ST_HAnchor.page;


            //表1行4列充值:a,b,c,d
            table.GetRow(0).GetCell(0).SetText("a");
            table.GetRow(0).GetCell(1).SetText("b");
            table.GetRow(0).GetCell(2).SetText("c");
            table.GetRow(0).GetCell(3).SetText("d");
            CT_Row       m_NewRow = new CT_Row();//创建1行
            XWPFTableRow m_Row    = new XWPFTableRow(m_NewRow, table);

            table.AddRow(m_Row);                     //必须要!!!
            XWPFTableCell cell = m_Row.CreateCell(); //创建单元格,也创建了一个CT_P
            CT_Tc         cttc = cell.GetCTTc();
            CT_TcPr       ctPr = cttc.AddNewTcPr();

            //ctPr.gridSpan.val = "3";//合并3列
            cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;
            cttc.GetPList()[0].AddNewR().AddNewT().Value  = "666";
            cell = m_Row.CreateCell();//创建单元格,也创建了一个CT_P
            cell.GetCTTc().GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;
            cell.GetCTTc().GetPList()[0].AddNewR().AddNewT().Value  = "e";
            //合并3列,合并2行
            //1行
            m_NewRow = new CT_Row();
            m_Row    = new XWPFTableRow(m_NewRow, table);
            table.AddRow(m_Row);
            cell = m_Row.CreateCell(); //第1单元格
            cell.SetText("f");
            cell = m_Row.CreateCell(); //从第2单元格开始合并
            cttc = cell.GetCTTc();
            ctPr = cttc.AddNewTcPr();
            // ctPr.gridSpan.val = "3";//合并3列
            ctPr.AddNewVMerge().val = ST_Merge.restart;     //开始合并行
            ctPr.AddNewVAlign().val = ST_VerticalJc.center; //垂直居中
            cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;
            cttc.GetPList()[0].AddNewR().AddNewT().Value  = "777";
            //2行
            m_NewRow = new CT_Row();
            m_Row    = new XWPFTableRow(m_NewRow, table);
            table.AddRow(m_Row);
            cell = m_Row.CreateCell(); //第1单元格
            cell.SetText("g");
            cell = m_Row.CreateCell(); //第2单元格
            cttc = cell.GetCTTc();
            ctPr = cttc.AddNewTcPr();
            // ctPr.gridSpan.val = "3";//合并3列
            ctPr.AddNewVMerge().val = ST_Merge.@continue;//继续合并行


            //表插入图片
            m_NewRow = new CT_Row();
            m_Row    = new XWPFTableRow(m_NewRow, table);
            table.AddRow(m_Row);
            cell = m_Row.CreateCell();//第1单元格
            //inline方式插入图片
            //gp = table.GetRow(table.Rows.Count - 1).GetCell(0).GetParagraph(table.GetRow(table.Rows.Count - 1).GetCell(0).GetCTTc().GetPList()[0]);//获得指定表单元格的段
            gp  = cell.GetParagraph(cell.GetCTTc().GetPList()[0]);
            gr  = gp.CreateRun();                                              //创建run
            gfs = new FileStream(m_PicPath, FileMode.Open, FileAccess.Read);   //读取图片文件
            gr.AddPicture(gfs, (int)PictureType.PNG, "1.jpg", 500000, 500000); //插入图片
            gfs.Close();
            //Anchor方式插入图片
            CT_Anchor an = new CT_Anchor();

            an.distB          = (uint)(0);
            an.distL          = 114300u;
            an.distR          = 114300U;
            an.distT          = 0U;
            an.relativeHeight = 251658240u;
            an.behindDoc      = false; //"0"
            an.locked         = false; //"0"
            an.layoutInCell   = true;  //"1"
            an.allowOverlap   = true;  //"1"


            NPOI.OpenXmlFormats.Dml.CT_Point2D simplePos = new NPOI.OpenXmlFormats.Dml.CT_Point2D();
            simplePos.x = (long)0;
            simplePos.y = (long)0;
            CT_EffectExtent effectExtent = new CT_EffectExtent();

            effectExtent.b = 0L;
            effectExtent.l = 0L;
            effectExtent.r = 0L;
            effectExtent.t = 0L;
            //wrapSquare(四周)
            cell = m_Row.CreateCell(); //第2单元格
            gp   = cell.GetParagraph(cell.GetCTTc().GetPList()[0]);
            gr   = gp.CreateRun();     //创建run
            CT_WrapSquare wrapSquare = new CT_WrapSquare();

            wrapSquare.wrapText = ST_WrapText.bothSides;
            gfs = new FileStream(m_PicPath, FileMode.Open, FileAccess.Read);//读取图片文件
            // gr.AddPicture(gfs, (int)PictureType.PNG, "1.png", 500000, 500000, 0, 0, wrapSquare, an, simplePos, ST_RelFromH.column, ST_RelFromV.paragraph, effectExtent);
            gr.AddPicture(gfs, (int)PictureType.PNG, "虚拟机", 500000, 500000);
            gfs.Close();
            //wrapTight(紧密)
            cell = m_Row.CreateCell(); //第3单元格
            gp   = cell.GetParagraph(cell.GetCTTc().GetPList()[0]);
            gr   = gp.CreateRun();     //创建run
            CT_WrapTight wrapTight = new CT_WrapTight();

            wrapTight.wrapText            = ST_WrapText.bothSides;
            wrapTight.wrapPolygon         = new CT_WrapPath();
            wrapTight.wrapPolygon.edited  = false;
            wrapTight.wrapPolygon.start   = new CT_Point2D();
            wrapTight.wrapPolygon.start.x = 0;
            wrapTight.wrapPolygon.start.y = 0;
            CT_Point2D lineTo = new CT_Point2D();

            wrapTight.wrapPolygon.lineTo = new List <CT_Point2D>();
            lineTo   = new CT_Point2D();
            lineTo.x = 0;
            lineTo.y = 1343;
            wrapTight.wrapPolygon.lineTo.Add(lineTo);
            lineTo   = new CT_Point2D();
            lineTo.x = 21405;
            lineTo.y = 1343;
            wrapTight.wrapPolygon.lineTo.Add(lineTo);
            lineTo   = new CT_Point2D();
            lineTo.x = 21405;
            lineTo.y = 0;
            wrapTight.wrapPolygon.lineTo.Add(lineTo);
            lineTo.x = 0;
            lineTo.y = 0;
            wrapTight.wrapPolygon.lineTo.Add(lineTo);
            gfs = new FileStream(m_PicPath, FileMode.Open, FileAccess.Read);//读取图片文件
            //gr.AddPicture(gfs, (int)PictureType.PNG, "1.png", 500000, 500000, 0, 0, wrapTight, an, simplePos, ST_RelFromH.column, ST_RelFromV.paragraph, effectExtent);
            gr.AddPicture(gfs, (int)PictureType.PNG, "虚拟机", 500000, 500000);
            gfs.Close();
            //wrapThrough(穿越)
            cell = m_Row.CreateCell();                                        //第4单元格
            gp   = cell.GetParagraph(cell.GetCTTc().GetPList()[0]);
            gr   = gp.CreateRun();                                            //创建run
            gfs  = new FileStream(m_PicPath, FileMode.Open, FileAccess.Read); //读取图片文件
            CT_WrapThrough wrapThrough = new CT_WrapThrough();

            wrapThrough.wrapText            = ST_WrapText.bothSides;
            wrapThrough.wrapPolygon         = new CT_WrapPath();
            wrapThrough.wrapPolygon.edited  = false;
            wrapThrough.wrapPolygon.start   = new CT_Point2D();
            wrapThrough.wrapPolygon.start.x = 0;
            wrapThrough.wrapPolygon.start.y = 0;
            lineTo = new CT_Point2D();
            wrapThrough.wrapPolygon.lineTo = new List <CT_Point2D>();
            lineTo   = new CT_Point2D();
            lineTo.x = 0;
            lineTo.y = 1343;
            wrapThrough.wrapPolygon.lineTo.Add(lineTo);
            lineTo   = new CT_Point2D();
            lineTo.x = 21405;
            lineTo.y = 1343;
            wrapThrough.wrapPolygon.lineTo.Add(lineTo);
            lineTo   = new CT_Point2D();
            lineTo.x = 21405;
            lineTo.y = 0;
            wrapThrough.wrapPolygon.lineTo.Add(lineTo);
            lineTo.x = 0;
            lineTo.y = 0;
            wrapThrough.wrapPolygon.lineTo.Add(lineTo);
            // gr.AddPicture(gfs, (int)PictureType.PNG, "15.png", 500000, 500000, 0, 0, wrapThrough, an, simplePos, ST_RelFromH.column, ST_RelFromV.paragraph, effectExtent);
            gr.AddPicture(gfs, (int)PictureType.PNG, "虚拟机", 500000, 500000);
            gfs.Close();


            gp = m_Docx.CreateParagraph();
            //gp.GetCTPPr().AddNewJc().val = ST_Jc.both;
            // gp.IndentationFirstLine = Indentation("宋体", 21, 2, FontStyle.Regular);//段首行缩进2字符
            gp.IndentationFirstLine = 15;
            gr = gp.CreateRun();
            gr.SetText("NPOI是POI项目的.NET版本。POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。使用NPOI你就可以在没有安装Office或者相应环境的机器上对WORD/EXCEL文档进行读写。NPOI是构建在POI3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作。");
            gp = m_Docx.CreateParagraph();
            // gp.GetCTPPr().AddNewJc().val = ST_Jc.both;
            //gp.IndentationFirstLine = Indentation("宋体", 21, 2, FontStyle.Regular);//段首行缩进2字符
            gp.IndentationFirstLine = 15;
            gr = gp.CreateRun();
            gr.SetText("NPOI之所以强大,并不是因为它支持导出Excel,而是因为它支持导入Excel,并能“理解”OLE2文档结构,这也是其他一些Excel读写库比较弱的方面。通常,读入并理解结构远比导出来得复杂,因为导入你必须假设一切情况都是可能的,而生成你只要保证满足你自己需求就可以了,如果把导入需求和生成需求比做两个集合,那么生成需求通常都是导入需求的子集。");
            //在本段中插图-wrapSquare
            //gr = gp.CreateRun();//创建run
            wrapSquare          = new CT_WrapSquare();
            wrapSquare.wrapText = ST_WrapText.bothSides;
            gfs = new FileStream(m_PicPath, FileMode.Open, FileAccess.Read);//读取图片文件
            // gr.AddPicture(gfs, (int)PictureType.PNG, "15.png", 500000, 500000, 900000, 200000, wrapSquare, an, simplePos, ST_RelFromH.column, ST_RelFromV.paragraph, effectExtent);
            gr.AddPicture(gfs, (int)PictureType.PNG, "虚拟机", 500000, 500000);
            gfs.Close();


            m_Docx.Write(ms);
            ms.Flush();
            SaveToFile(ms, Path.GetPathRoot(Directory.GetCurrentDirectory()) + "\\NPOI.docx");
        }
예제 #31
0
        /**
         * Get the TableCell which belongs to the TableCell
         */
        public XWPFTableCell GetTableCell(CT_Tc cell)
        {
            if (!(cell.Parent is CT_Row))
                return null;
            CT_Row row = (CT_Row)cell.Parent;

            if (!(row.Parent is CT_Tbl))
            {
                return null;
            }
            CT_Tbl tbl = (CT_Tbl)row.Parent;
            XWPFTable table = GetTable(tbl);
            if (table == null)
            {
                return null;
            }
            XWPFTableRow tableRow = table.GetRow(row);
            if (tableRow == null)
            {
                return null;
            }
            return tableRow.GetTableCell(cell);
        }
예제 #32
0
 //创建评估报告索力评估结果单元格
 void CreateCableForceAssessmentResultCell(XWPFTable table, out CT_Row m_NewRow, out XWPFTableRow m_Row, out XWPFTableCell cell, out CT_Tc cttc, out CT_TcPr ctPr)
 {
     DealWithMergeCell(table, out m_NewRow, out m_Row, out cell, out cttc, out ctPr);
     ctPr.AddNewVMerge().val = ST_Merge.@continue;//合并行
     cell = m_Row.CreateCell();
     SetBoldFontCell(cell, "吊杆及系杆索力评估");
     SetAlign(cell);
     for (int i = 1; i < 4; i++)
     {
         cell = m_Row.CreateCell();
         SetAlign(cell);
     }
 }