XWPFTable nestedXwpfTable= CreateNestedTableFromTableCell(h,4900, 2, 8); EditXWPFTableRow(nestedXwpfTable, 0, 400, r1 => { EditXwpfTableCell(r1, 0, 400, h1 => { CreateCellText(h1, "税种"); h1.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.BOTTOM); }); EditXwpfTableCell(r1, 1, 600, h1 => { CreateCellText(h1, "营业税"); h1.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.BOTTOM); }); EditXwpfTableCell(r1, 2, 600, h1 => { CreateCellText(h1, "城建税"); h1.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.BOTTOM); }); EditXwpfTableCell(r1, 3, 600, h1 => { XWPFParagraph paragraph = CreateCellText(h1, "教育费附加", ParagraphAlignment.CENTER, true); paragraph.IndentationRight = 140; paragraph.IndentationLeft = 140; h1.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.BOTTOM); }); EditXwpfTableCell(r1, 4, 600, h1 => { CreateCellText(h1, "地方教育附加", ParagraphAlignment.CENTER, true); h1.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.BOTTOM); }); EditXwpfTableCell(r1, 5, 600, h1 => { CreateCellText(h1, "水利基金"); h1.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.BOTTOM); }); EditXwpfTableCell(r1, 6, 600, h1 => { CreateCellText(h1, "印花税"); h1.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.BOTTOM); }); EditXwpfTableCell(r1, 7, 600, h1 => { XWPFParagraph paragraph = CreateCellText(h1, "个人所得税", ParagraphAlignment.CENTER, true); paragraph.IndentationRight = 140; paragraph.IndentationLeft = 140; h1.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.BOTTOM); }); }); EditXWPFTableRow(nestedXwpfTable, 1, 730, r1 => { EditXwpfTableCell(r1, 0, 400, h1 => { CreateCellText(h1, "金额"); h1.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.BOTTOM); }); EditXwpfTableCell(r1, 1, 600, h1 => { CreateCellText(h1, ""); h1.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.BOTTOM); }); EditXwpfTableCell(r1, 2, 600, h1 => { CreateCellText(h1, ""); h1.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.BOTTOM); }); EditXwpfTableCell(r1, 3, 600, h1 => { CreateCellText(h1, ""); h1.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.BOTTOM); }); EditXwpfTableCell(r1, 4, 600, h1 => { CreateCellText(h1, ""); h1.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.BOTTOM); }); EditXwpfTableCell(r1, 5, 600, h1 => { CreateCellText(h1, ""); h1.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.BOTTOM); }); EditXwpfTableCell(r1, 6, 600, h1 => { CreateCellText(h1, ""); h1.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.BOTTOM); }); EditXwpfTableCell(r1, 7, 600, h1 => { CreateCellText(h1, ""); h1.SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.BOTTOM); }); }); }); MemoryStream ms = new MemoryStream(); m_Docx.Write(ms); ms.Flush(); // ms.Position = 0; return File(ms.ToArray(), "application/msword", HttpUtility.UrlEncode("纳税证明.doc")); } #region 操作docx public XWPFParagraph CreateXwpfParagraph(XWPFDocument m_Docx, ParagraphAlignment al, Action<XWPFParagraph> ParagrapAction , params Action<XWPFRun>[] Runs) { XWPFParagraph p1x = m_Docx.CreateParagraph(); p1x.Alignment = al; if (ParagrapAction != null) { ParagrapAction(p1x); } foreach (Action<XWPFRun> run in Runs) { XWPFRun xwpfRun = p1x.CreateRun(); run(xwpfRun); } return p1x; } public void CreateXWPFTableRow(XWPFTable table, ulong Height, Action<XWPFTableRow> RowAction) { XWPFTableRow xwpfTableRow = table.CreateRow(); xwpfTableRow.GetCTRow().AddNewTrPr().AddNewTrHeight().val = Height; RowAction(xwpfTableRow); } public void EditXWPFTableRow(XWPFTable table, int i, ulong Height, Action<XWPFTableRow> RowAction) { XWPFTableRow xwpfTableRow = table.GetRow(i); xwpfTableRow.GetCTRow().AddNewTrPr().AddNewTrHeight().val = Height; RowAction(xwpfTableRow); } public XWPFTableCell EditXwpfTableCell(XWPFTableRow xwpfTableRow, int i, int width, Action<XWPFTableCell> funcAction) { XWPFTableCell tableCell = xwpfTableRow.GetCell(i); CT_TcPr m_Pr = tableCell.GetCTTc().AddNewTcPr(); m_Pr.tcW = new CT_TblWidth(); m_Pr.tcW.w = width.ToString();//单元格宽 m_Pr.tcW.type = ST_TblWidth.pct; funcAction(tableCell); return tableCell; } public XWPFTableCell EditXwpfTableCell(XWPFTableRow xwpfTableRow, int i, Action<XWPFTableCell> funcAction) { XWPFTableCell tableCell = xwpfTableRow.GetCell(i); funcAction(tableCell); return tableCell; } public XWPFTableCell CreateXwpfTableCell(XWPFTableRow xwpfTableRow, int width, Action<XWPFTableCell> funcAction) { XWPFTableCell tableCell = xwpfTableRow.CreateCell(); CT_TcPr m_Pr = tableCell.GetCTTc().AddNewTcPr(); m_Pr.tcW = new CT_TblWidth(); m_Pr.tcW.w = width.ToString();//单元格宽 m_Pr.tcW.type = ST_TblWidth.pct; funcAction(tableCell); return tableCell; }
************************************** 关键方法:: public XWPFTable CreateNestedTableFromTableCell(XWPFTableCell h,int width ,int rs, int cs) { CT_Tbl ctx = new CT_Tbl(); h.GetCTTc().Items.Add(ctx); h.GetCTTc().ItemsElementName.Add(ItemsChoiceTableCellType.tbl); h.GetCTTc().GetTblList().Add(ctx); h.GetCTTc().AddNewP(); XWPFTable NestedTable = new XWPFTable(ctx, h, rs, cs); h.InsertTable(0, NestedTable); ctx.AddNewTblPr().AddNewTblW().w = width.ToString();//表宽度 ctx.AddNewTblPr().AddNewTblW().type = ST_TblWidth.pct; ctx.AddNewTblPr().jc= new CT_Jc(); ctx.AddNewTblPr().jc.val=ST_Jc.center; return NestedTable; } ************************************************* public XWPFParagraph CreateCellText(XWPFTableCell h, string txt, ParagraphAlignment alignment = ParagraphAlignment.CENTER, bool IsWordWrap = false, int FontSize = 12, bool isBold = false, string FontFamily = "宋体") { h.RemoveParagraph(0); XWPFParagraph p2 = h.AddParagraph(); p2.IsWordWrap = IsWordWrap; p2.Alignment = alignment; XWPFRun r2 = p2.CreateRun(); r2.SetBold(isBold); r2.SetText(txt); r2.FontFamily =FontFamily;//设置雅黑字体 r2.FontSize =FontSize; return p2; } #endregion