void SetRedFontCell(XWPFTableCell cell, string value) { XWPFParagraph pIO = cell.AddParagraph(); pIO.Alignment = ParagraphAlignment.CENTER; XWPFRun rIO = pIO.CreateRun(); rIO.SetColor("red"); rIO.SetText(value); SetAlign(cell); cell.RemoveParagraph(0); }
private static void CreateConverText(XWPFTableCell cell, string text, int fontSize) { cell.RemoveParagraph(0); XWPFParagraph paragraph = cell.AddParagraph(); paragraph.Alignment = ParagraphAlignment.CENTER; XWPFRun run = paragraph.CreateRun(); run.SetText(text); run.SetFontFamily("黑体", FontCharRange.None); run.FontSize = fontSize; }
private static void CreateText(XWPFTableCell cell, string text, bool isBold) { cell.RemoveParagraph(0); XWPFParagraph paragraph = cell.AddParagraph(); paragraph.Alignment = ParagraphAlignment.LEFT; XWPFRun run = paragraph.CreateRun(); run.SetText(text); run.SetFontFamily("宋体", FontCharRange.None); if (isBold) { run.IsBold = true; } run.FontSize = 11; }
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); }
private static void CopyCell(XWPFTableCell templateCell, XWPFTableCell cell) { cell.SetColor(templateCell.GetColor()); CT_TcBorders templateBorders = templateCell.GetCTTc().tcPr.tcBorders; if (templateBorders != null) { CT_TcBorders borders = cell.GetCTTc().AddNewTcPr().AddNewTcBorders(); WordGenerator.CopyBorders(templateBorders, borders); } for (int i = 0; i < cell.Paragraphs.Count; i++) { cell.RemoveParagraph(0); } foreach (XWPFParagraph templateph in templateCell.Paragraphs) { XWPFParagraph ph = cell.AddParagraph(); WordGenerator.CopyParagraph(templateph, ph); } }
/// <summary> /// 复制一行到指定位置 /// 样式信息也复制了,但需要完善。 /// </summary> /// <param name="sourceRow"></param> /// <param name="table"></param> /// <param name="rowIndex"></param> /// <returns></returns> public static XWPFTableRow CopyRow(XWPFTableRow sourceRow, XWPFTable table, int rowIndex) { //在表格指定位置新增一行 var needRemove = false; if (table.NumberOfRows <= rowIndex) { table.CreateRow(); needRemove = true; } XWPFTableRow targetRow = table.InsertNewTableRow(rowIndex); if (needRemove) { table.RemoveRow(rowIndex + 1); } //复制行属性 targetRow.GetCTRow().trPr = sourceRow.GetCTRow().trPr; List <XWPFTableCell> sourceCells = sourceRow.GetTableCells(); if (null == sourceCells) { return(targetRow); } //复制列及其属性和内容 foreach (var sourceCell in sourceCells) { XWPFTableCell targetCell = targetRow.AddNewTableCell(); targetCell.RemoveParagraph(0);//新建cell会自动创建paragraph,将其删除,下面代码循环添加 //列属性 targetCell.GetCTTc().tcPr = sourceCell.GetCTTc().tcPr; //段落属性 if (sourceCell.Paragraphs != null && sourceCell.Paragraphs.Count > 0) { foreach (var sourcePa in sourceCell.Paragraphs) { if (sourcePa.Runs != null && sourcePa.Runs.Count > 0) { var targetPa = targetCell.AddParagraph(); targetPa.Alignment = sourcePa.Alignment; foreach (var srcR in sourcePa.Runs) { XWPFRun tarR = targetPa.CreateRun(); tarR.SetText(srcR.Text); tarR.SetTextPosition(srcR.GetTextPosition()); tarR.FontFamily = srcR.FontFamily; tarR.FontSize = srcR.FontSize <= 0 ? 12 : srcR.FontSize; tarR.IsBold = srcR.IsBold; tarR.IsItalic = srcR.IsItalic; tarR.IsCapitalized = srcR.IsCapitalized; tarR.SetColor(srcR.GetColor()); tarR.SetUnderline(srcR.Underline); tarR.CharacterSpacing = srcR.CharacterSpacing; } } else { targetCell.SetText(sourceCell.GetText()); } } } else { targetCell.SetText(sourceCell.GetText()); } } return(targetRow); }
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 }