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 Generate() { GlobalHelper.CreateFolderIfNotExists(OutputFolder); FileInfo newFile = new FileInfo(DocumentFullName); if (newFile.Exists) { newFile.Delete(); newFile = new FileInfo(DocumentFullName); } DocumentSetting setting = new DocumentSetting() { PaperType = PaperType.A4_V, PaperMarType = PaperMarType.MarType1, SavePath = DocumentFullName, Footer = DocumentName }; var wordTables = new List <WordTable>(); foreach (var ws in DocumentDataSets) { if (ws.WorkSheetType == WorkSheetTypeEnum.Summary) { var wordTable = WordTableGenerator.GetSummaryWordTable(ws); wordTables.Add(wordTable); } else if (ws.WorkSheetType == WorkSheetTypeEnum.ITD) { var wordTable = WordTableGenerator.GetITDWordTable(ws); wordTables.Add(wordTable); } else if (ws.WorkSheetType == WorkSheetTypeEnum.UnderwritingYear) { var wordTable = WordTableGenerator.GetUWYearWordTable(ws); wordTables.Add(wordTable); } } WordHelper.ExportDocumentWithDataTables(setting, wordTables); }
public static void ExportDocumentWithDataTables(DocumentSetting setting, List <WordTable> wordTables) { XWPFDocument docx = new XWPFDocument(); MemoryStream ms = new MemoryStream(); #region Page Setting //Set Document docx.Document.body.sectPr = new CT_SectPr(); CT_SectPr setPr = docx.Document.body.sectPr; //get page size Tuple <int, int> size = GetPaperSize(setting.PaperType); setPr.pgSz.w = (ulong)size.Item1; setPr.pgSz.h = (ulong)size.Item2; var mar = GetPaperMar(setting.PaperMarType); setPr.pgMar.left = (ulong)mar.Item3; setPr.pgMar.right = (ulong)mar.Item4; setPr.pgMar.top = mar.Item1.ToString(); setPr.pgMar.bottom = mar.Item2.ToString(); #region Footer CT_Ftr m_ftr = new CT_Ftr(); m_ftr.AddNewP().AddNewR().AddNewT().Value = setting.Footer; XWPFRelation Frelation = XWPFRelation.FOOTER; XWPFFooter m_f = (XWPFFooter)docx.CreateRelationship(Frelation, XWPFFactory.GetInstance(), docx.FooterList.Count + 1); m_f.SetHeaderFooter(m_ftr); CT_HdrFtrRef m_HdrFtr1 = setPr.AddNewFooterReference(); m_HdrFtr1.type = ST_HdrFtr.@default; m_HdrFtr1.id = m_f.GetPackageRelationship().Id; #endregion #endregion Page Setting var i = 0; foreach (var wordTable in wordTables) { i++; ExportDocumentWithDataTable(docx, setting, wordTable); if (i < wordTables.Count) { XWPFParagraph m_xp = docx.CreateParagraph(); m_xp.CreateRun().AddBreak(); } } docx.Write(ms); using (FileStream fs = new FileStream(setting.SavePath, FileMode.Create, FileAccess.Write)) { byte[] data = ms.ToArray(); fs.Write(data, 0, data.Length); fs.Flush(); } ms.Close(); }