Пример #1
0
        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);
        }
Пример #2
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;
        }
Пример #3
0
        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;
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
            }
        }
Пример #6
0
        /// <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);
        }
Пример #7
0
        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
        }