Beispiel #1
0
        public void Read()
        {
            FileStream   stream = new FileStream(filename, FileMode.Open);
            XWPFDocument doc    = new XWPFDocument(stream);

            //解析段落
            foreach (XWPFParagraph para in doc.Paragraphs)
            {
                string text = para.ParagraphText;
                Console.WriteLine(text);
                //另一种方式
                //foreach (XWPFRun run in para.Runs)
                //{
                //    text = run.ToString();
                //    Console.Write(text+"text");
                //}
            }

            //解析表格
            XWPFTable table = doc.Tables[0];

            for (int row = 1; row < table.Rows.Count; row++)
            {
                XWPFTableRow r = table.Rows[row];
                foreach (XWPFTableCell cell in r.GetTableCells())
                {
                    string str = cell.GetText();
                    Console.Write(str + "\t");
                }
                Console.WriteLine();
            }
            Console.Read();
        }
Beispiel #2
0
        /// <summary>
        /// 获取表中的列信息
        /// </summary>
        /// <param name="row">行节点</param>
        /// <param name="dic">列名字典集合</param>
        /// <param name="pTable">表信息</param>
        private void InitColumns(XWPFTableRow row, Dictionary <int, string> dic, TableInfo pTable)
        {
            ColumnInfo mColumn = new ColumnInfo();
            int        iCell   = 0;

            //列ID
            mColumn.ColumnObjectId = Guid.NewGuid().ToString();
            string sTemp = "";

            foreach (var cell in row.GetTableCells())
            {
                sTemp = cell.GetText().Trim();
                Common.GetColumnInfo(dic, sTemp, mColumn, iCell, pTable);
                iCell++;
            }
            mColumn.DataTypeStr = Common.GetDataTypeStr(mColumn.DataTypeStr, mColumn.Width);
            mColumn.Width       = Common.GetColumnWidth(mColumn.DataTypeStr);

            if (string.IsNullOrEmpty(mColumn.Comment))
            {
                mColumn.Comment = mColumn.Name;
            }
            if (string.IsNullOrEmpty(mColumn.DefaultValue))
            {
                mColumn.DefaultValue = "";
            }
            mColumn.Sequence = pTable.ListColumnInfo.Count + 1;
            pTable.ListColumnInfo.Add(mColumn);
        }
Beispiel #3
0
        /// <summary>
        /// 应用表格模板
        /// </summary>
        /// <param name="tableContent"></param>
        /// <param name="tableTemplate"></param>
        /// <param name="colNames"></param>
        private void ApplyToTableTemplate(XWPFTable tableContent, TableTemplateModel tableTemplate, Dictionary <int, string> colNames)
        {
            int startRowNum = tableTemplate.StartRowNumber;

            for (var rowIndex = 0; rowIndex < tableTemplate.Value.Rows.Count; rowIndex++)
            {
                int          documentRowIndex = rowIndex + startRowNum;
                XWPFTableRow row       = rowIndex == 0 ? tableContent.GetRow(documentRowIndex) : tableContent.InsertNewTableRow(documentRowIndex - 1);
                int          cellCount = row.GetTableCells().Count;
                int          count     = colNames.Max(m => m.Key);
                for (int i = cellCount - 1; i < count; i++)
                {
                    row.CreateCell();
                }
                foreach (KeyValuePair <int, string> colName in colNames)
                {
                    string[]      colValues = colName.Value.Split(',');
                    string        value     = tableTemplate.Value.Rows[rowIndex][colValues[0]].ToString();
                    XWPFParagraph paragraph = GetCellContent(rowIndex, colName.Key, tableContent, value, tableTemplate.OnSetCellText);
                    XWPFTableCell cell      = row.GetCell(colName.Key);
                    cell.SetParagraph(paragraph);
                    for (var i = 1; i < colValues.Length; i++)
                    {
                        ApplyCommand(colValues[i], colName.Key, row);
                    }
                }
            }
        }
Beispiel #4
0
        static void Main(string[] args)
        {
            XWPFDocument document     = new XWPFDocument();
            XWPFTable    tableOne     = document.CreateTable();
            XWPFTableRow tableOneRow1 = tableOne.GetRow(0);
            XWPFTableRow tableOneRow2 = tableOne.CreateRow();

            tableOneRow1.GetCell(0).SetText("Test11");
            tableOneRow1.AddNewTableCell();
            tableOneRow1.GetCell(1).SetText("Test12");
            tableOneRow2.GetCell(0).SetText("Test21");
            tableOneRow2.AddNewTableCell();

            XWPFTableCell cell  = tableOneRow2.GetCell(1);
            var           ctTbl = cell.GetCTTc().AddNewTbl();

            //to remove the line from the cell, you can call cell.removeParagraph(0) instead
            cell.SetText("line1");
            cell.GetCTTc().AddNewP();

            XWPFTable    tableTwo     = new XWPFTable(ctTbl, cell);
            XWPFTableRow tableTwoRow1 = tableTwo.GetRow(0);

            tableTwoRow1.GetCell(0).SetText("nestedTable11");
            tableTwoRow1.AddNewTableCell();
            tableTwoRow1.GetCell(1).SetText("nestedTable12");

            using (FileStream fs = new FileStream("nestedTable.docx", FileMode.Create))
            {
                document.Write(fs);
            }
        }
        //地政函档案封面及收件回执
        public static void DZHDAFMJSJHZ(Dictionary <string, string> dic, string tplFilePath, string outputPrintFilePath)
        {
            using (FileStream tplFileStream = new FileStream(tplFilePath, FileMode.Open, FileAccess.Read))
                using (FileStream outputFileStream = File.Create(outputPrintFilePath))
                {
                    List <RespDZHSJHZ> list   = new DbHelper().QueryRespDZHSJHZ(SharpDbPrinter.Program.globalYwid);
                    XWPFDocument       tplDoc = new XWPFDocument(tplFileStream);
                    var printDoc   = DocxBaseRelace(tplDoc, dic);
                    var firstTable = printDoc.Tables[0];
                    for (int i = 0; i < list.Count; i++)
                    {
                        XWPFTableRow newRow = new XWPFTableRow(new NPOI.OpenXmlFormats.Wordprocessing.CT_Row(), firstTable);
                        newRow.CreateCell();
                        newRow.CreateCell();
                        newRow.CreateCell();
                        newRow.CreateCell();
                        newRow.MergeCells(0, 1);
                        if (list[i].MTR_NAME == null && list[i].OLD_NUM == null && list[i].DUPL_NUM == null)
                        {
                        }
                        else
                        {
                            newRow.GetCell(0).SetParagraph(SetCellText(printDoc, firstTable, list[i].MTR_NAME ?? "0"));
                            newRow.GetCell(1).SetParagraph(SetCellText(printDoc, firstTable, list[i].OLD_NUM ?? "0"));
                            newRow.GetCell(2).SetParagraph(SetCellText(printDoc, firstTable, list[i].DUPL_NUM ?? "0"));
                        }

                        firstTable.AddRow(newRow, 2 + i);
                    }
                    firstTable.RemoveRow(1);

                    printDoc.Write(outputFileStream);
                }
        }
        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);
                }
            }
        }
Beispiel #7
0
        private static void AddTableData <T>(XWPFDocument doc, IEnumerable <T> tableSource) where T : class, new()
        {
            XWPFTable tableAdd = doc.Tables[0];

            T obj = new T();

            PropertyInfo[] properties = obj.GetType().GetProperties().ToArray();

            int colSize = tableAdd.GetRow(0).GetTableCells().Count;

            if (colSize != properties.Length)
            {
                throw new ArgumentException("对象属性数量与表格列数量不一致");
            }

            foreach (T t in tableSource)
            {
                XWPFTableRow row = tableAdd.CreateRow();
                for (int i = 0; i < properties.Length; i++)
                {
                    object valObj = properties[i].GetValue(t);
                    row.GetCell(i).SetText(valObj == null ? string.Empty : valObj.ToString());
                }
            }
        }
Beispiel #8
0
        public static void JTClearRuns(this XWPFTableRow row)
        {
            var cells = row.GetTableCells();
            var count = cells.Count;

            for (int i = 0; i < count; i++)
            {
                var cell       = cells[i];
                var paragraphs = cell.Paragraphs;
                if (paragraphs == null)
                {
                    throw new JTNoParagraphExistInCellException();
                }
                var pCount = paragraphs.Count;
                for (int j = 0; j < pCount; j++)
                {
                    var paragraph = paragraphs[j];
                    var runs      = paragraph.Runs;
                    if (runs != null)
                    {
                        var rCount = runs.Count;
                        for (int k = 0; k < rCount; k++)
                        {
                            paragraph.RemoveRun(0);
                        }
                    }
                }
            }
        }
Beispiel #9
0
        public void TestSetGetVertAlignment()
        {
            // instantiate the following classes so they'll Get picked up by
            // the XmlBean process and Added to the jar file. they are required
            // for the following XWPFTableCell methods.
            CT_Shd ctShd = new CT_Shd();

            Assert.IsNotNull(ctShd);
            CT_VerticalJc ctVjc = new CT_VerticalJc();

            Assert.IsNotNull(ctVjc);
            ST_Shd stShd = ST_Shd.nil;

            Assert.IsNotNull(stShd);
            ST_VerticalJc stVjc = ST_VerticalJc.top;

            Assert.IsNotNull(stVjc);

            // create a table
            XWPFDocument doc     = new XWPFDocument();
            CT_Tbl       ctTable = new CT_Tbl();
            XWPFTable    table   = new XWPFTable(ctTable, doc);
            // table has a single row by default; grab it
            XWPFTableRow tr = table.GetRow(0);

            Assert.IsNotNull(tr);
            // row has a single cell by default; grab it
            XWPFTableCell cell = tr.GetCell(0);

            cell.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.BOTH);
            XWPFTableCell.XWPFVertAlign al = cell.GetVerticalAlignment().Value;
            Assert.AreEqual(XWPFTableCell.XWPFVertAlign.BOTH, al);
        }
Beispiel #10
0
        /// <summary>
        /// 为XWPFDocument文档复制指定索引的表
        /// </summary>
        /// <param name="readDoc">模板文件</param>
        /// <param name="tableIndex">需要复制模板的table的索引</param>
        /// <param name="targetIndex">复制到目标位置的table索引(如果目标位置原来有表格,会被覆盖)</param>
        /// <param name="myDoc">新创建的文件</param>
        public static void CopyTable(XWPFDocument readDoc, int tableIndex, int targetIndex, XWPFDocument myDoc)
        {
            var    sourceTable = readDoc.Tables[tableIndex];
            CT_Tbl sourceCTTbl = readDoc.Document.body.GetTblArray(8);

            var targetTable = myDoc.CreateTable();

            myDoc.SetTable(targetIndex, targetTable);
            var targetCTTbl = myDoc.Document.body.GetTblArray()[myDoc.Document.body.GetTblArray().Length - 1];

            targetCTTbl.tblPr        = sourceCTTbl.tblPr;
            targetCTTbl.tblPr.jc.val = ST_Jc.left;//表格在页面水平位置
            //targetCTTbl.tblGrid = sourceCTTbl.tblGrid;

            for (int i = 0; i < sourceTable.Rows.Count; i++)
            {
                var tbRow     = targetTable.CreateRow();
                var targetRow = tbRow.GetCTRow();
                tbRow.RemoveCell(0);
                XWPFTableRow row = sourceTable.Rows[i];
                targetRow.trPr = row.GetCTRow().trPr;
                for (int c = 0; c < row.GetTableCells().Count; c++)
                {
                    var tbCell = tbRow.CreateCell();
                    tbCell.RemoveParagraph(0);
                    var targetCell = tbCell.GetCTTc();

                    XWPFTableCell cell = row.GetTableCells()[c];
                    targetCell.tcPr = cell.GetCTTc().tcPr;
                    for (int p = 0; p < cell.Paragraphs.Count; p++)
                    {
                        var           tbPhs     = tbCell.AddParagraph();
                        CT_P          targetPhs = tbPhs.GetCTP();
                        XWPFParagraph para      = cell.Paragraphs[p];
                        var           paraCTP   = para.GetCTP();
                        targetPhs.pPr          = paraCTP.pPr;
                        targetPhs.rsidR        = paraCTP.rsidR;
                        targetPhs.rsidRPr      = paraCTP.rsidRPr;
                        targetPhs.rsidRDefault = paraCTP.rsidRDefault;
                        targetPhs.rsidP        = paraCTP.rsidP;

                        for (int r = 0; r < para.Runs.Count; r++)
                        {
                            var  tbRun     = tbPhs.CreateRun();
                            CT_R targetRun = tbRun.GetCTR();

                            XWPFRun run    = para.Runs[r];
                            var     runCTR = run.GetCTR();
                            targetRun.rPr     = runCTR.rPr;
                            targetRun.rsidRPr = runCTR.rsidRPr;
                            targetRun.rsidR   = runCTR.rsidR;
                            CT_Text text = targetRun.AddNewT();
                            text.Value = run.Text;
                        }
                    }
                }
            }
            targetTable.RemoveRow(0);
        }
        /// <summary>
        /// 将表生成字段
        /// </summary>
        /// <param name="fileName">生成文件的名称</param>
        /// <param name="sql">获取数据库所有表 SELECT name FROM tmc..sysobjects Where xtype='U' ORDER BY name </param>
        /// <param name="WordFieldName"> Word中列的名称</param>
        public override void CreateTablesToWord(string fileName, string[] wordFieldName)
        {
            using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
            {
                var           m_Docx = CreateXWPFDocument(fileName);
                XWPFParagraph p0     = m_Docx.CreateParagraph();
                XWPFRun       r0     = p0.CreateRun();
                r0.SetText("DOCX表");

                //获取数据源
                var tables = con.Query <TablesName>(_getTablesSql).ToList();

                for (int i = 0; i < tables.Count; i++)
                {
                    //获取 数据源
                    var FieldNames = GetTableFileds(tables[i].Tables_in_Tmc);

                    XWPFTable table = m_Docx.CreateTable(2, 4);//创建一行四列表

                    //每一行的中文名称 比如 字段 数据类型 可为空 描述
                    for (int icol = 0; icol < 4; icol++)
                    {
                        table.GetRow(1).GetCell(icol).SetText(wordFieldName[icol]);
                        table.GetRow(1).GetCell(icol).SetColor("#BABABA");
                    }

                    //  数据库中的字段名称,类型备注信息
                    for (int j = 1; j < FieldNames.Count; j++)
                    {
                        XWPFTableRow m_Row = table.CreateRow();
                        m_Row.GetCell(0).SetText(FieldNames[j].COLUMN_NAME);
                        m_Row.GetCell(1).SetText(FieldNames[j].DotNet_DATA_TYPE);
                        m_Row.GetCell(2).SetText(FieldNames[j].IsNullAble);
                        m_Row.GetCell(3).SetText(FieldNames[j].COLUMN_COMMENT);
                    }

                    //标注表名,如果放在放在上面,只能生成一列,这样88行会报错
                    table.GetRow(0).MergeCells(0, 3);
                    table.GetRow(0).GetCell(0).SetText(tables[i].Tables_in_Tmc);
                    table.GetRow(0).GetCell(0).SetColor("#98FB98");
                    table.GetRow(0).GetCTRow().AddNewTrPr().AddNewTrHeight().val = (ulong)500;

                    //创建一个空白行分隔每个表,并添加每一行标题
                    CT_P newLine = m_Docx.Document.body.AddNewP();
                    newLine.AddNewPPr().AddNewJc().val = ST_Jc.center;           //段落水平居中
                    XWPFParagraph gp       = new XWPFParagraph(newLine, m_Docx); //创建XWPFParagraph
                    XWPFRun       runTitle = gp.CreateRun();
                    runTitle.IsBold = true;
                    runTitle.SetText(i.ToString() + "." + tables[i].Tables_in_Tmc);
                    runTitle.FontSize = 16;
                    runTitle.SetFontFamily("宋体", FontCharRange.None);//设置雅黑字体
                }

                MemoryStream ms = new MemoryStream();
                m_Docx.Write(ms);
                ms.Flush();
                SaveToFile(ms, "d:\\Tmc数据库表字段说明.docx");
            }
        }
Beispiel #12
0
 /// <summary>
 /// 根据需要在table中增加必要的行
 /// </summary>
 private void AddNeedRow(XWPFTable tb, int count)
 {
     for (int i = 0; i < count; i++)
     {
         XWPFTableRow m_Row = tb.CreateRow();
         m_Row.SetHeight(380);
     }
 }
Beispiel #13
0
 /// <summary>
 /// 替换表格中的一行
 /// </summary>
 /// <param name="addedRow"></param>
 /// <param name="dataRow"></param>
 private static void ReplaceRow(XWPFTableRow addedRow, Models.Word.ReplacementRow dataRow)
 {
     //遍历新行的每个单元格,进行赋值
     foreach (var cell in addedRow.GetTableCells())
     {
         ReplaceInParagraphs(cell.Paragraphs, dataRow.Cells);
     }
 }
Beispiel #14
0
        /// <summary>
        /// 设置数据文档的表
        /// </summary>
        /// <param name="document">文档</param>
        /// <param name="table">当前表</param>
        /// <param name="no">当前表编号,从1开始</param>
        public static void SetTableWord(XWPFDocument document, TableMeta table, Int32 no)
        {
            //表名
            XWPFParagraph p = document.CreateParagraph();

            p.Alignment = ParagraphAlignment.LEFT;
            XWPFRun r = p.CreateRun();

            r.SetText($"{no}.{table.TableName}");
            r.FontSize = 14;
            r.IsBold   = true;

            if (!string.IsNullOrEmpty(table.Comment))
            {
                //表注释
                p           = document.CreateParagraph();
                p.Alignment = ParagraphAlignment.LEFT;
                r           = p.CreateRun();
                r.SetText(table.Comment);
                r.FontSize = 14;
                r.IsBold   = true;
            }


            //表格
            XWPFTable grid = document.CreateTable(table.Columns.Count + 1, 5);



            grid.Width = 2500;
            grid.SetColumnWidth(0, 256 * 2);
            grid.SetColumnWidth(1, 256 * 2);
            grid.SetColumnWidth(2, 256 * 1);
            grid.SetColumnWidth(3, 256 * 1);
            grid.SetColumnWidth(4, 256 * 4);



            //设置表头
            XWPFTableRow row = grid.GetRow(0);

            row.GetCell(0).SetParagraph(SetCellText(document, grid, "字段名"));
            row.GetCell(1).SetParagraph(SetCellText(document, grid, "类型"));
            row.GetCell(2).SetParagraph(SetCellText(document, grid, "是否主键"));
            row.GetCell(3).SetParagraph(SetCellText(document, grid, "可为空"));
            row.GetCell(4).SetParagraph(SetCellText(document, grid, "说明"));

            for (int i = 0; i < table.Columns.Count; i++)
            {
                ColumnMeta col = table.Columns[i];
                row = grid.GetRow(i + 1);
                row.GetCell(0).SetParagraph(SetCellText(document, grid, col.ColumnName));
                row.GetCell(1).SetParagraph(SetCellText(document, grid, col.FieldTypeName));
                row.GetCell(2).SetParagraph(SetCellText(document, grid, col.IsKey ? "是" : "否"));
                row.GetCell(3).SetParagraph(SetCellText(document, grid, col.AllowDBNull ? "是" : "否"));
                row.GetCell(4).SetParagraph(SetCellText(document, grid, string.IsNullOrEmpty(col.Comment)?string.Empty:col.Comment));
            }
        }
        public void getRenderedRows(Marker input, StyleConfig config, XWPFTable parentTable)
        {
            XWPFTableRow tableRowContainer = parentTable.CreateRow();

            foreach (Marker marker in input.Contents)
            {
                getRenderedCell(marker, config, tableRowContainer);
            }
        }
 /// <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();
 }
Beispiel #17
0
 /// <summary>
 /// 根据需要在table中增加必要的行
 /// </summary>
 private void AddNeedRow(XWPFTable tb, int count, int rowIndex)
 {
     for (int i = 0; i < count; i++)
     {
         XWPFTableRow m_Row = tb.CreateRow();
     }
     tb.CreateRow();
     tb.CreateRow();
 }
Beispiel #18
0
        /// <summary>
        /// 设置表格行背景
        /// </summary>
        /// <param name="row"></param>
        /// <param name="strRGB"></param>
        /// <returns></returns>
        public static XWPFTableRow SetRowBackgroundColor(this XWPFTableRow row, string strRGB)
        {
            var cells = row.GetTableCells();

            foreach (var c in cells)
            {
                c.SetColor(strRGB);
            }
            return(row);
        }
Beispiel #19
0
 private static void ReplaceRow(XWPFTableRow row, Dictionary <string, object> data)
 {
     foreach (var cell in row.GetTableCells())
     {
         foreach (var item in cell.Paragraphs)
         {
             ReplaceParagraph(item, data, cell);
         }
     }
 }
Beispiel #20
0
        // 给一个table , 追加行
        private static void UpdateTable(XWPFTable table)
        {
            //创建表格-提前创建好表格后填数
            //      XWPFTable tableContent = doc.Tables[0];//4行5列

            for (int i = 0; i < 10; i++)
            {
                XWPFTableRow row = table.CreateRow();
                row.GetCell(0).SetText("name");
                row.GetCell(1).SetText("age");
                row.GetCell(2).SetText("sex");
                row.GetCell(3).SetText("mark");
            }

            // tableContent.AddNewCol();
            // tableContent.AddNewCol();
            // tableContent.AddNewCol();
            // tableContent.AddNewCol();


            // tableContent.CreateRow();
            // tableContent.CreateRow();
            // tableContent.CreateRow();
            // tableContent.CreateRow();
            // tableContent.CreateRow();

            // // tableContent.Width = 1000 * 5;
            // // tableContent.SetColumnWidth(0, 1000);/* 设置列宽 */
            // // tableContent.SetColumnWidth(1, 1500);
            // // tableContent.SetColumnWidth(2, 1500);
            // // tableContent.SetColumnWidth(3, 1000);

            // tableContent.GetRow(0).GetCell(0).SetParagraph(SetCellText(doc, tableContent, "地点"));
            // tableContent.GetRow(0).GetCell(1).SetParagraph(SetCellText(doc, tableContent, "日期"));
            // tableContent.GetRow(0).GetCell(2).SetParagraph(SetCellText(doc, tableContent, "男性"));
            // tableContent.GetRow(0).GetCell(3).SetParagraph(SetCellText(doc, tableContent, "女性"));
            // tableContent.GetRow(0).GetCell(4).SetParagraph(SetCellText(doc, tableContent, "合计"));

            // //测试数据格式
            // List<ArrayList> list = new List<ArrayList>()
            // {
            //     new ArrayList(){ "航天桥", "-", "0", "0", "0"},
            //     new ArrayList(){ "马甸", "-", "0", "0", "0" },
            //     new ArrayList(){"洋桥", "04月16日 - 05月31日", "0", "0", "0"},

            // };
            // for (int i = 0; i < list.Count; i++)//有3个数组
            // {
            //     ArrayList ls = list[i];
            //     for (int j = 0; j < ls.Count; j++)
            //     {
            //         tableContent.GetRow(i + 1).GetCell(j).SetParagraph(SetCellText(doc, tableContent, ls[j].ToString()));
            //     }
            // }
        }
Beispiel #21
0
 private string GetReference(XWPFTableRow row)
 {
     try
     {
         return(row.GetCell(3).Paragraphs[0].Runs[0].Text);
     }
     catch
     {
         return(null);
     }
 }
Beispiel #22
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);
        }
 /// <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);
 }
Beispiel #24
0
        public void TestSetGetHeight()
        {
            XWPFDocument doc = new XWPFDocument();

            CT_Tbl table = new CT_Tbl();

            XWPFTable    xtab = new XWPFTable(table, doc);
            XWPFTableRow row  = xtab.CreateRow();

            row.Height = (20);
            Assert.AreEqual(20, row.Height);
        }
Beispiel #25
0
        private static void AddTableData <T>(XWPFDocument doc, IEnumerable <T> tableSource, Action <XWPFTableRow, T> todo) where T : class, new()
        {
            XWPFTable tableAdd = doc.Tables[0];

            T obj = new T();

            foreach (T t in tableSource)
            {
                XWPFTableRow row = tableAdd.CreateRow();
                todo.Invoke(row, t);
            }
        }
        public static void ExportDocumentWithDataTable(XWPFDocument docx, DocumentSetting setting, WordTable wordTable)
        {
            if (wordTable == null || wordTable.Rows == null || wordTable.Rows.Count == 0)
            {
                return;
            }

            CT_P p = docx.Document.body.AddNewP();

            p.AddNewPPr().AddNewJc().val = ST_Jc.center;

            var Rows = wordTable.Rows;

            XWPFTable table = docx.CreateTable(1, wordTable.ColumnCount);

            table.RemoveRow(0);//remove first blank row
            table.Width = wordTable.Width;

            for (var i = 0; i < Rows.Count; i++)
            {
                var row = Rows[i];
                if (row == null || row.Count == 0)
                {
                    continue;
                }

                CT_Row       nr = new CT_Row();
                XWPFTableRow mr = new XWPFTableRow(nr, table);
                table.AddRow(mr);

                for (var j = 0; j < row.Count; j++)
                {
                    var cell = row[j];

                    var c1 = mr.CreateCell();
                    var ct = c1.GetCTTc();
                    var cp = ct.AddNewTcPr();
                    cp.gridSpan     = new CT_DecimalNumber();
                    cp.gridSpan.val = Convert.ToString(cell.MergeColumnNumber);

                    var tblW = cp.AddNewTcW();
                    tblW.type = ST_TblWidth.dxa;
                    tblW.w    = cell.Width.ToString();

                    c1.SetParagraph(SetCellText(docx, table, cell));

                    c1.SetBorderTop(XWPFTable.XWPFBorderType.NONE, 0, 0, "#FFFFFF");
                    c1.SetBorderRight(XWPFTable.XWPFBorderType.NONE, 0, 0, "#FFFFFF");
                    c1.SetBorderLeft(XWPFTable.XWPFBorderType.NONE, 0, 0, "#FFFFFF");
                    c1.SetBorderBottom(XWPFTable.XWPFBorderType.NONE, 0, 0, "#FFFFFF");
                }
            }
        }
        public void getRenderedCell(Marker input, StyleConfig config, XWPFTableRow parentRow)
        {
            StyleConfig   markerStyle        = (StyleConfig)config.Clone();
            XWPFTableCell tableCellContainer = parentRow.CreateCell();
            XWPFParagraph cellContents;

            switch (input)
            {
            case THMarker tHMarker:
                markerStyle.isBold = true;
                cellContents       = tableCellContainer.AddParagraph(markerStyle);
                cellContents.SetBidi(configDocx.rightToLeft);
                foreach (Marker marker in input.Contents)
                {
                    RenderMarker(marker, markerStyle, cellContents);
                }
                break;

            case THRMarker tHRMarker:
                markerStyle.isAlignRight = true;
                markerStyle.isBold       = true;
                cellContents             = tableCellContainer.AddParagraph(markerStyle);
                cellContents.SetBidi(configDocx.rightToLeft);
                foreach (Marker marker in input.Contents)
                {
                    RenderMarker(marker, markerStyle, cellContents);
                }
                break;

            case TCMarker tCMarker:
                cellContents = tableCellContainer.AddParagraph(markerStyle);
                cellContents.SetBidi(configDocx.rightToLeft);
                foreach (Marker marker in input.Contents)
                {
                    RenderMarker(marker, markerStyle, cellContents);
                }
                break;

            case TCRMarker tCRMarker:
                markerStyle.isAlignRight = true;
                cellContents             = tableCellContainer.AddParagraph(markerStyle);
                cellContents.SetBidi(configDocx.rightToLeft);
                foreach (Marker marker in input.Contents)
                {
                    RenderMarker(marker, markerStyle, cellContents);
                }
                break;

            default:
                break;
            }
        }
 //创建评估报告应力评估结果单元格
 void CreateStressAssessmentResultCell(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);
     }
 }
Beispiel #29
0
        private XWPFDocument InsertTable(XWPFDocument doc, Table t)
        {
            var maxColCount = t.Rows.Max(x => x.Cells.Count);

            if (t == null)
            {
                return(doc);
            }

            var table = doc.CreateTable();

            table.Width = t.Width;

            int index = 0;

            t.Rows?.ForEach(r =>
            {
                XWPFTableRow tableRow = index == 0 ? table.GetRow(0) : table.CreateRow();

                for (int i = 0; i < r.Cells.Count; i++)
                {
                    var cell     = r.Cells[i];
                    var xwpfCell = i == 0 ? tableRow.GetCell(0) : tableRow.AddNewTableCell();
                    foreach (var para in cell.Paragraphs)
                    {
                        xwpfCell.AddParagraph().Set(para);
                    }

                    if (!string.IsNullOrWhiteSpace(cell.Color))
                    {
                        tableRow.GetCell(i).SetColor(cell.Color);
                    }
                }

                //补全单元格,并合并
                var rowColsCount = tableRow.GetTableICells().Count;
                if (rowColsCount < maxColCount)
                {
                    for (int i = rowColsCount - 1; i < maxColCount; i++)
                    {
                        tableRow.CreateCell();
                    }
                    tableRow.MergeCells(rowColsCount - 1, maxColCount);
                }

                index++;
            });

            return(doc);
        }
        public static XWPFRun GetRun(XWPFTableRow row, int line, XWPFTableRow modelrow)
        {
            var cell = GetCell(row, line, modelrow);

            if (cell.Paragraphs.Count == 0)
            {
                cell.AddParagraph();
            }
            var     para = cell.Paragraphs[0];
            XWPFRun run  = para.CreateRun();

            run.FontFamily = "仿宋";
            return(run);
        }