Npoi导出Word

Npoi导出Word

参考网上大神们笔记,完成Word导出。

//创建文档
            XWPFDocument doc = new XWPFDocument();            

            //标题
            XWPFParagraph p1 = doc.CreateParagraph();

            XWPFRun r1 = p1.CreateRun();
            r1.SetBold(true);
            r1.FontSize = 23;
            r1.SetText("先进个人基本信息");
            r1.SetTextPosition(30);

            CT_P doc_p1 = doc.Document.body.GetPArray(0);//标题居中
            doc_p1.AddNewPPr().AddNewJc().val = ST_Jc.center;

            //创建表格
            XWPFTable table = doc.CreateTable();//行,列

            table.RemoveRow(0);

            #region

            //for (int i = 0; i < table.Rows.Count; i++)//水平和垂直居中
            //{
            //    for (int j = 0; j < table.Rows.Count; j++)
            //    {
            //        CT_Tc cttc = table.GetRow(i).GetCell(j).GetCTTc();

            //        CT_TcPr ctpr = cttc.AddNewTcPr();

            //        cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;//水平居中

            //        ctpr.AddNewVAlign().val = ST_VerticalJc.center;//垂直居中
            //    }
            //}

            //SetColSpan(table.GetRow(2).GetCell(1), 2);
            //SetColSpan(table.GetRow(2).GetCell(4), 2);

            //SetColSpan(table.GetRow(3).GetCell(1), 2);
            //SetColSpan(table.GetRow(3).GetCell(4), 2);

            //SetColSpan(table.GetRow(5).GetCell(1), 2);
            //SetColSpan(table.GetRow(5).GetCell(4), 2);

            //SetColSpan(table.GetRow(6).GetCell(1), 7);

            //SetColSpan(table.GetRow(7).GetCell(1), 7);

            #endregion

            //2.表格内容
            XWPFTableRow row_0 = CreateRow(table);//第一行

            XWPFTableCell cell_0_0 = CreateCell(row_0);
            cell_0_0.SetText("姓名");
            XWPFTableCell cell_0_1 = CreateCell(row_0);
            cell_0_1.SetText("");
            XWPFTableCell cell_0_2 = CreateCell(row_0);
            cell_0_2.SetText("性别");
            XWPFTableCell cell_0_3 = CreateCell(row_0);
            cell_0_3.SetText("");
            XWPFTableCell cell_0_4 = CreateCell(row_0);
            cell_0_4.SetText("民族");
            XWPFTableCell cell_0_5 = CreateCell(row_0);
            cell_0_5.SetText("");
            XWPFTableCell cell_0_6 = CreateCell(row_0);
            cell_0_6.SetText("出生年月");
            XWPFTableCell cell_0_7 = CreateCell(row_0);
            cell_0_7.SetText("");

            XWPFTableRow row_1 = CreateRow(table);//第二行
            XWPFTableCell cell_1_0 = CreateCell(row_1);
            cell_1_0.SetText("政治面貌");
            XWPFTableCell cell_1_1 = CreateCell(row_1);
            cell_1_1.SetText("");
            XWPFTableCell cell_1_2 = CreateCell(row_1);
            cell_1_2.SetText("籍贯");
            XWPFTableCell cell_1_3 = CreateCell(row_1);
            cell_1_3.SetText("");
            XWPFTableCell cell_1_4 = CreateCell(row_1);
            cell_1_4.SetText("学历");
            XWPFTableCell cell_1_5 = CreateCell(row_1);
            cell_1_5.SetText("");
            XWPFTableCell cell_1_6 = CreateCell(row_1);
            cell_1_6.SetText("参加工作时间");
            XWPFTableCell cell_1_7 = CreateCell(row_1);
            cell_1_7.SetText("");

            XWPFTableRow row_2 = CreateRow(table);//第三行
            XWPFTableCell cell_2_0 = CreateCell(row_2);
            cell_2_0.SetText("所在单位");
            XWPFTableCell cell_2_1 = CreateCell(row_2);
            SetColSpan(cell_2_1, 2);//合并单元格
            cell_2_1.SetText("");
            XWPFTableCell cell_2_2 = CreateCell(row_2);
            cell_2_2.SetText("所属部门");
            XWPFTableCell cell_2_3 = CreateCell(row_2);
            SetColSpan(cell_2_3, 2);
            cell_2_3.SetText("");
            XWPFTableCell cell_2_4 = CreateCell(row_2);
            cell_2_4.SetText("隶属系统");
            XWPFTableCell cell_2_5 = CreateCell(row_2);
            cell_2_5.SetText("");

            XWPFTableRow row_3 = CreateRow(table);//第四行
            XWPFTableCell cell_3_0 = CreateCell(row_3);
            cell_3_0.SetText("现任职务");
            XWPFTableCell cell_3_1 = CreateCell(row_3);
            SetColSpan(cell_3_1, 2);
            cell_3_1.SetText("");
            XWPFTableCell cell_3_2 = CreateCell(row_3);
            cell_3_2.SetText("任现职时间");
            XWPFTableCell cell_3_3 = CreateCell(row_3);
            SetColSpan(cell_3_3, 2);
            cell_3_3.SetText("");
            XWPFTableCell cell_3_4 = CreateCell(row_3);
            cell_3_4.SetText("典型类别");
            XWPFTableCell cell_3_5 = CreateCell(row_3);
            cell_3_5.SetText("");

            XWPFTableRow row_4 = CreateRow(table);//第五行
            XWPFTableCell cell_4_0 = CreateCell(row_4);
            cell_4_0.SetText("职称");
            XWPFTableCell cell_4_1 = CreateCell(row_4);
            cell_4_1.SetText("");
            XWPFTableCell cell_4_2 = CreateCell(row_4);
            cell_4_2.SetText("任现职称时间");
            XWPFTableCell cell_4_3 = CreateCell(row_4);
            cell_4_3.SetText("");
            XWPFTableCell cell_4_4 = CreateCell(row_4);
            cell_4_4.SetText("职工状况");
            XWPFTableCell cell_4_5 = CreateCell(row_4);
            cell_4_5.SetText("");
            XWPFTableCell cell_4_6 = CreateCell(row_4);
            cell_4_6.SetText("是否干部");
            XWPFTableCell cell_4_7 = CreateCell(row_4);
            cell_4_7.SetText("");

            XWPFTableRow row_5 = CreateRow(table);//第六行
            XWPFTableCell cell_5_0 = CreateCell(row_5);
            cell_5_0.SetText("毕业院校及专业");
            XWPFTableCell cell_5_1 = CreateCell(row_5);
            SetColSpan(cell_5_1, 2);
            cell_5_1.SetText("");
            XWPFTableCell cell_5_2 = CreateCell(row_5);
            cell_5_2.SetText("毕业时间");
            XWPFTableCell cell_5_3 = CreateCell(row_5);
            SetColSpan(cell_5_3, 2);
            cell_5_3.SetText("");
            XWPFTableCell cell_5_4 = CreateCell(row_5);
            cell_5_4.SetText("学位");
            XWPFTableCell cell_5_5 = CreateCell(row_5);
            cell_5_5.SetText("");

            XWPFTableRow row_6 = CreateRow(table);//第七行
            XWPFTableCell cell_6_0 = CreateCell(row_6);
            cell_6_0.SetText("所获荣誉");
            XWPFTableCell cell_6_1 = CreateCell(row_6);
            SetColSpan(cell_6_1, 7);
            cell_6_1.SetText("");

            XWPFTableRow row_7 = CreateRow(table);//第八行
            XWPFTableCell cell_7_0 = CreateCell(row_7);
            SetColSpan(cell_7_0, 8);

            XWPFParagraph aa = cell_7_0.AddParagraph();
            aa.Alignment = ParagraphAlignment.CENTER;
            XWPFRun aa_r = aa.CreateRun();
            aa_r.FontSize = 18;
            aa_r.SetTextPosition(20);
            aa_r.SetText("个人简介");

            XWPFParagraph bb = cell_7_0.AddParagraph();
            bb.Alignment = ParagraphAlignment.CENTER;
            XWPFRun bb_r = bb.CreateRun();
            bb_r.SetText("123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,");

            #region
            //table.GetRow(0).GetCell(0).SetText("姓名");//第一行
            //table.GetRow(0).GetCell(1).SetText("");
            //table.GetRow(0).GetCell(2).SetText("性别");
            //table.GetRow(0).GetCell(3).SetText("");
            //table.GetRow(0).GetCell(4).SetText("民族");
            //table.GetRow(0).GetCell(5).SetText("");
            //table.GetRow(0).GetCell(6).SetText("出生年月");
            //table.GetRow(0).GetCell(7).SetText("");

            //table.GetRow(1).GetCell(0).SetText("政治面貌");//第二行
            //table.GetRow(1).GetCell(1).SetText("");
            //table.GetRow(1).GetCell(2).SetText("籍贯");
            //table.GetRow(1).GetCell(3).SetText("");
            //table.GetRow(1).GetCell(4).SetText("学历");
            //table.GetRow(1).GetCell(5).SetText("");
            //table.GetRow(1).GetCell(6).SetText("参加工作时间");
            //table.GetRow(1).GetCell(7).SetText("");

            //table.GetRow(2).GetCell(0).SetText("所在单位");//第三行
            //table.GetRow(2).GetCell(1).SetText("");
            //table.GetRow(2).GetCell(2).SetText("所属部门");
            //table.GetRow(2).GetCell(3).SetText("");
            //table.GetRow(2).GetCell(4).SetText("隶属系统");
            //table.GetRow(2).GetCell(5).SetText("");

            //table.GetRow(3).GetCell(0).SetText("现任职务");//第四行
            //table.GetRow(3).GetCell(1).SetText("");
            //table.GetRow(3).GetCell(2).SetText("任现职时间");
            //table.GetRow(3).GetCell(3).SetText("");
            //table.GetRow(3).GetCell(4).SetText("典型类别");
            //table.GetRow(3).GetCell(5).SetText("");

            //table.GetRow(4).GetCell(0).SetText("职称");//第五行
            //table.GetRow(4).GetCell(1).SetText("");
            //table.GetRow(4).GetCell(2).SetText("任现职称时间");
            //table.GetRow(4).GetCell(3).SetText("");
            //table.GetRow(4).GetCell(4).SetText("职工状况");
            //table.GetRow(4).GetCell(5).SetText("");
            //table.GetRow(4).GetCell(6).SetText("是否干部");
            //table.GetRow(4).GetCell(7).SetText("");

            //table.GetRow(5).GetCell(0).SetText("毕业院校及专业");//第六行
            //table.GetRow(5).GetCell(1).SetText("");
            //table.GetRow(5).GetCell(2).SetText("毕业时间");
            //table.GetRow(5).GetCell(3).SetText("");
            //table.GetRow(5).GetCell(4).SetText("学位");
            //table.GetRow(5).GetCell(5).SetText("");

            //table.GetRow(6).GetCell(0).SetText("所获荣誉");//第七行
            //table.GetRow(6).GetCell(1).SetText("");

            //table.GetRow(7).GetCell(0).SetText("个人简介");//第八行
            //table.GetRow(7).GetCell(1).SetText("");
            #endregion

            //导出
            DownloadByOutputStreamBlock(new MemoryStream(ToByte(doc)), "先进个人基本信息--"+DateTime.Now.ToString("yyyyMMddHHmmss")+".docx");

/// <summary>
        /// 创建行
        /// </summary>
        /// <param name="table"></param>
        /// <returns></returns>
        private XWPFTableRow CreateRow(XWPFTable table)
        {
            CT_Row m_NewRow = new CT_Row();
            XWPFTableRow m_row = new XWPFTableRow(m_NewRow, table);
            m_row.GetCTRow().AddNewTrPr().AddNewTrHeight().val = (ulong)426;
            table.AddRow(m_row);

            return m_row;
        }

/// <summary>
        /// 创建列
        /// </summary>
        /// <param name="row"></param>
        /// <returns></returns>
        private XWPFTableCell CreateCell(XWPFTableRow row)
        {
            XWPFTableCell cell = row.CreateCell();
            CT_Tc cttc = cell.GetCTTc();
            CT_TcPr ctpr = cttc.AddNewTcPr();

            cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;//水平居中

            ctpr.AddNewVAlign().val = ST_VerticalJc.center;//垂直居中

            ctpr.tcW = new CT_TblWidth();
            ctpr.tcW.w = "1200";//默认列宽
            ctpr.tcW.type = ST_TblWidth.dxa;

            return cell;
        }

/// <summary>
        /// 合并单元格
        /// </summary>
        /// <param name="cell"></param>
        /// <param name="Span"></param>
        private void SetColSpan(XWPFTableCell cell,int Span)
        {
            CT_Tc cttc = cell.GetCTTc();
            CT_TcPr ctpr = cttc.AddNewTcPr();
            ctpr.gridSpan = new CT_DecimalNumber();
            ctpr.gridSpan.val = Span.ToString();//合并单元格

            cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;//水平居中

            ctpr.AddNewVAlign().val = ST_VerticalJc.center;//垂直居中
        }

 /// <summary>
        /// 设置列宽
        /// </summary>
        /// <param name="table">表格</param>
        /// <param name="ColIndex">列号。从0开始编号</param>
        /// <param name="Width">列宽</param>
        private void SetColWith(XWPFTable table, int ColIndex, int Width)
        {
            CT_TcPr m_pr = table.GetRow(0).GetCell(ColIndex).GetCTTc().AddNewTcPr();
            m_pr.tcW = new CT_TblWidth();
            m_pr.tcW.w = Width.ToString();
            m_pr.tcW.type = ST_TblWidth.dxa;
        }

 /// <summary>
        /// 导出文件
        /// </summary>
        /// <param name="stream">流</param>
        /// <param name="fileName">导出文件名</param>
        public void DownloadByOutputStreamBlock(System.IO.Stream stream, string fileName)
        {
            using (stream)
            {
                //将流的位置设置到开始位置。
                stream.Position = 0;
                //块大小
                long ChunkSize = 102400;
                //建立100k的缓冲区
                byte[] buffer = new byte[ChunkSize];
                //已读字节数
                long dataLengthToRead = stream.Length;

                Response.ContentType = "application/octet-stream";
                Response.AddHeader("Content-Disposition",
                    string.Format("attachment; filename={0}", HttpUtility.UrlPathEncode(fileName)));

                while (dataLengthToRead > 0 && Response.IsClientConnected)
                {
                    int lengthRead = stream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小
                    Response.OutputStream.Write(buffer, 0, lengthRead);
                    Response.Flush();
                    Response.Clear();
                    dataLengthToRead -= lengthRead;
                }
                Response.Close();
            }
        }

        private byte[] ToByte(XWPFDocument wb)
        {
            using (MemoryStream ms = new MemoryStream())
            {
                //XSSFWorkbook即读取.xlsx文件返回的MemoryStream是关闭
                //但是可以ToArray(),这是NPOI的bug
                wb.Write(ms);
                return ms.ToArray();
            }
        }

时间: 2024-10-22 22:24:15

Npoi导出Word的相关文章

通过NPOI导出Word文档

1 XWPFDocument doc = new XWPFDocument(); 2 XWPFParagraph p0 = doc.CreateParagraph(); 3 p0.Alignment = ParagraphAlignment.LEFT; 4 5 XWPFRun r0 = p0.CreateRun(); 6 r0.FontFamily = "宋体"; 7 r0.FontSize = 18; 8 r0.IsBold = true; 9 r0.SetText("未登

NPOI导出word,以及对table的一些设置

参考网址:http://www.aiuxian.com/article/p-1970779.html NPOI版本:2.1.3.1 最终效果图: 代码: 1 /// <summary> 2 /// 导出word培训班自然情况表 3 /// </summary> 4 [HttpPost] 5 public void PrintWord() 6 { 7 int id = Int32.Parse(Request.Form["id"]); 8 var query = f

npoi 导出word中写入特殊字符

今天碰到一个要在word中插入复选框的特殊符号,找了半天,发现相关文档不太多.跟大家分享下. 代码实现起来很简单. run之前的代码就不写了.大家可以网上搜索. run.FontFamily = "Wingdings 2";//这边是特殊字符的字体 text = text.Replace("name", Convert.ToChar(0x0052).ToString());//0x0052是特殊字符的十六进制代码//text = text.Replace("

.NET Core使用NPOI导出复杂Word详解

前言: 最近使用NPOI做了个导出Word文档的功能,关于使用.NET Core 导出Word文档的方式有很多.最终我为什么选择了NPOI来实现了这个功能,首先是NPOI是一个开源,免费且容易上手的第三方框架(并且现在已支持.NET Core,GitHub源码地址:https://github.com/tonyqus/npoi).因为之前使用NPOI导出Execl比较多,这次第一次使用NPOI 来导出Word文档还真没有什么头绪.首先看了下GItHub中的源码有一个简单Word导出的示例,然后在

.net core 导出word文档

Npoi导出word(Peanuts) 标签: C#npoi导出word合并列列样式 2015-10-05 22:16 2896人阅读 评论(0) 收藏 举报  分类: C#(13)  版权声明:本文为博主原创文章,未经博主允许不得转载. 一个项目,要做一个从数据库读取数据,然后导出到word,因为涉及到后台数据库的读取,决定用npoi来导出word. NPOI源码地址:http://npoi.codeplex.com/ NPOI 2.0 api文档: http://www.npoi.info/

NPOI 2.0导出word(docx格式)

大名鼎鼎的NPOI用来导出EXCEL的文章园子里面有很多,可是用来导出WORD文档的文章大都含糊不清,最近刚好完成一个导出WORD文档的需求,在此分享下. NPOI里面认为word文档的最基本的结构是段落,代表这个段落的类就是XWPFParagraph,使用这个类可以设置段落里面的字体.大小.以及是否加粗等. 代表整个文档的的类XWPFDocument,是最外层的容器相当于一个word文档的实例,代表表格的类XWPFTable,是较小级别的段落容器相当于一个表格的实例. 一个XWPFDocume

利用Aspose.Words.dll导出Word代替NPOI

许久没来写博客了,已至于登录博客园的密码都忘却了. 时间过的真快,最近再做一个招聘管理系统,其中用到了导出Word文档的功能,尝试了各种方法,遇到了各种问题.不过最后还是解决了导出Word的问题. 一.针对导出Word文档的功能,采用的几个方案: 1.预置好Word文档模板,采用加载替换文档内容标签的方式实现.    采用这种方案可以借助两个第三方组件来实现,分别如下: (1).借助Microsoft.Office.Interop.Word组件实现.  (2).借助NPOI实现.  (3).借助

分享使用NPOI导出Excel树状结构的数据,如部门用户菜单权限

大家都知道使用NPOI导出Excel格式数据 很简单,网上一搜,到处都有示例代码. 因为工作的关系,经常会有处理各种数据库数据的场景,其中处理Excel 数据导出,以备客户人员确认数据,场景很常见. 一个系统开发出来,系统要运行起来,很多数据要初始化,这个时候也是需要客户提供各种业务的基础数据.客户提供的数据中,其中除了word.pdf,最常见的就是Excel. 废话不多说,直接上图上代码: 如图, 左侧三列,作为 一个系统 所有菜单的树状结构. 其他列 以用户的信息(如用户名.登录名) 作为表

NPOI导出数据到Excel

NPOI导出数据到Excel 前言 Asp.net操作Excel已经是老生长谈的事情了,可下面我说的这个NPOI操作Excel,应该是最好的方案了,没有之一,使用NPOI能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作. 方法 先去官网:http://npoi.codeplex.com/下载需要