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(); }
/// <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); }
/// <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); } } } }
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); } } }
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()); } } }
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); } } } } }
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); }
/// <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"); } }
/// <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); } }
/// <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); } }
/// <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(); }
/// <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(); }
/// <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); }
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); } } }
// 给一个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())); // } // } }
private string GetReference(XWPFTableRow row) { try { return(row.GetCell(3).Paragraphs[0].Runs[0].Text); } catch { return(null); } }
/// <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); }
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); }
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); } }
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); }