参考网址:http://www.aiuxian.com/article/p-1970779.html

NPOI版本:2.1.3.1

最终效果图:

代码:

  /// <summary>
/// 导出word培训班自然情况表
/// </summary>
[HttpPost]
public void PrintWord()
{
int id = Int32.Parse(Request.Form["id"]);
var query = from n in db.Nature
where n.NatureId == id && n.IsDelete == false
select new NatureInfo
{
NatureBeginTime = n.NatureBeginTime,
NatureEndTime = n.NatureEndTime,
ActualNum = n.ActualNum,
PlanNum = n.PlanNum,
NaturePlace = n.NaturePlace,
NatureMajor = n.NatureMajor,
TrainName = n.TrainName,
TotalHours = n.TotalHours,
TeachingHours = n.TeachingHours,
Remark = n.Remark
};
DataTable dt = query.ToDataTable(rec => new object[] { query });
#region 培训班自然情况表
XWPFDocument doc = new XWPFDocument();//创建word文档
MemoryStream ms = new MemoryStream();//创建流 XWPFParagraph p0 = doc.CreateParagraph();//创建段落
p0.Alignment = ParagraphAlignment.CENTER;//居中显示
XWPFRun r0 = p0.CreateRun();
//设置字体
r0.FontFamily = "宋体";
//设置字体大小
r0.FontSize = ;
//字体是否加粗,这里加粗了
r0.SetBold(true);
r0.SetText("培训班自然情况表");//写入文本 XWPFParagraph p1 = doc.CreateParagraph();
p1.Alignment = ParagraphAlignment.LEFT;
XWPFRun r1 = p1.CreateRun();
r1.SetText("培训机构:石家庄职工培训基地"); XWPFTable table = doc.CreateTable(, );//创建table
table.RemoveRow();//去掉第一行空白的
table.SetColumnWidth(, * );//设置列的宽度
table.SetColumnWidth(, * );
table.SetColumnWidth(, * );
table.SetColumnWidth(, * );
CT_Tbl m_CTTbl = doc.Document.body.GetTblArray()[];//获得文档第一张表
m_CTTbl.AddNewTblPr().jc = new CT_Jc();
m_CTTbl.AddNewTblPr().jc.val = ST_Jc.center;//表在页面水平居中 foreach (DataRow r in dt.Rows)
{
CT_Row nr = new CT_Row();
XWPFTableRow mr = new XWPFTableRow(nr, table);//创建行
mr.GetCTRow().AddNewTrPr().AddNewTrHeight().val = (ulong);//设置行高
nr.AddNewTrPr().AddNewTrHeight().val = (ulong);//设置行高(这两行都得有)
table.AddRow(mr);//将行添加到table中 mr.CreateCell().SetText("培训班名称");
mr.GetCell().SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);//文字垂直居中(即上下居中)
XWPFTableCell c1 = mr.CreateCell();//创建单元格
CT_Tc ct = c1.GetCTTc();
CT_TcPr cp = ct.AddNewTcPr(); cp.gridSpan = new CT_DecimalNumber();
cp.gridSpan.val = ""; //合并3列
cp.AddNewVAlign().val = ST_VerticalJc.center;
ct.GetPList()[].AddNewPPr().AddNewJc().val = ST_Jc.center;//单元格内容居中显示
ct.GetPList()[].AddNewR().AddNewT().Value = r["TrainName"].ToString(); CT_Row cr1 = new CT_Row();
XWPFTableRow tr1 = new XWPFTableRow(cr1, table);
tr1.GetCTRow().AddNewTrPr().AddNewTrHeight().val = (ulong);
cr1.AddNewTrPr().AddNewTrHeight().val = (ulong);
table.AddRow(tr1);
tr1.CreateCell().SetText("培训地点");
tr1.GetCell().SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
tr1.CreateCell().SetText(r["NaturePlace"].ToString());
tr1.GetCell().SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
tr1.CreateCell().SetText("培训时间");
tr1.GetCell().SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
tr1.CreateCell().SetText(Convert.ToDateTime(r["NatureBeginTime"].ToString()).ToShortDateString() + "~" + Convert.ToDateTime(r["NatureEndTime"].ToString()).ToShortDateString());
tr1.GetCell().SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); CT_Row cr2 = new CT_Row();
XWPFTableRow tr2 = new XWPFTableRow(cr2, table);
tr2.GetCTRow().AddNewTrPr().AddNewTrHeight().val = (ulong);
cr2.AddNewTrPr().AddNewTrHeight().val = (ulong);
table.AddRow(tr2);
tr2.CreateCell().SetText("计划人数");
tr2.GetCell().SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
tr2.CreateCell().SetText(r["PlanNum"].ToString());
tr2.GetCell().SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
tr2.CreateCell().SetText("实际人数");
tr2.GetCell().SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
tr2.CreateCell().SetText(r["ActualNum"].ToString());
tr2.GetCell().SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); CT_Row cr3 = new CT_Row();
XWPFTableRow tr3 = new XWPFTableRow(cr3, table);//创建行
tr3.GetCTRow().AddNewTrPr().AddNewTrHeight().val = (ulong);
cr3.AddNewTrPr().AddNewTrHeight().val = (ulong);
table.AddRow(tr3);//将行添加到table中
tr3.CreateCell().SetText("总学时");
tr3.GetCell().SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
XWPFTableCell tc3 = tr3.CreateCell();//创建单元格
CT_Tc ct3 = tc3.GetCTTc();
CT_TcPr cp3 = ct3.AddNewTcPr();
cp3.gridSpan = new CT_DecimalNumber();
cp3.gridSpan.val = ""; //合并3列
ct3.GetPList()[].AddNewPPr().AddNewJc().val = ST_Jc.left;//单元格内容居中显示
ct3.GetPList()[].AddNewR().AddNewT().Value = r["TotalHours"].ToString();
tr3.GetCell().SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); CT_Row cr4 = new CT_Row();
XWPFTableRow tr4 = new XWPFTableRow(cr4, table);//创建行
tr4.GetCTRow().AddNewTrPr().AddNewTrHeight().val = (ulong); cr4.AddNewTrPr().AddNewTrHeight().val = (ulong);
table.AddRow(tr4);//将行添加到table中
tr4.CreateCell().SetText("课程");
tr4.GetCell().SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
XWPFTableCell tc4 = tr4.CreateCell();//创建单元格
CT_Tc ct4 = tc4.GetCTTc();
CT_TcPr cp4 = ct4.AddNewTcPr();
cp4.gridSpan = new CT_DecimalNumber();
cp4.gridSpan.val = ""; //合并3列
ct4.GetPList()[].AddNewPPr().AddNewJc().val = ST_Jc.left;//单元格内容居中显示
ct4.GetPList()[].AddNewR().AddNewT().Value = r["NatureMajor"].ToString();
tr4.GetCell().SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); CT_Row cr5 = new CT_Row();
XWPFTableRow tr5 = new XWPFTableRow(cr5, table);//创建行
tr5.GetCTRow().AddNewTrPr().AddNewTrHeight().val = (ulong);
cr5.AddNewTrPr().AddNewTrHeight().val = (ulong);
table.AddRow(tr5);//将行添加到table中
tr5.CreateCell().SetText("授课学时");
tr5.GetCell().SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
XWPFTableCell tc5 = tr5.CreateCell();//创建单元格
CT_Tc ct5 = tc5.GetCTTc();
CT_TcPr cp5 = ct5.AddNewTcPr();
cp5.gridSpan = new CT_DecimalNumber();
cp5.gridSpan.val = ""; //合并3列
ct5.GetPList()[].AddNewPPr().AddNewJc().val = ST_Jc.left;//单元格内容居中显示
ct5.GetPList()[].AddNewR().AddNewT().Value = r["TeachingHours"].ToString();
tr5.GetCell().SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); CT_Row cr6 = new CT_Row();
XWPFTableRow tr6 = new XWPFTableRow(cr6, table);//创建行
tr6.GetCTRow().AddNewTrPr().AddNewTrHeight().val = (ulong);
cr6.AddNewTrPr().AddNewTrHeight().val = (ulong);
table.AddRow(tr6);//将行添加到table中
tr6.CreateCell().SetText("备注");
tr6.GetCell().SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
XWPFTableCell tc6 = tr6.CreateCell();//创建单元格
CT_Tc ct6 = tc6.GetCTTc();
CT_TcPr cp6 = ct6.AddNewTcPr();
cp6.gridSpan = new CT_DecimalNumber();
cp6.gridSpan.val = ""; //合并3列
ct6.GetPList()[].AddNewPPr().AddNewJc().val = ST_Jc.left;//单元格内容居中显示
ct6.GetPList()[].AddNewR().AddNewT().Value = r["Remark"].ToString();
tr6.GetCell().SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
}
#endregion // 写入到客户端
doc.Write(ms);
// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.doc", "培训班自然情况表" + System.DateTime.Now.ToString("yyyymmddhhmmssfff ")));
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
// 指定返回的是一个不能被客户端读取的流,必须被下载
Response.ContentType = "application/ms-word";
// 把文件流发送到客户端
Response.BinaryWrite(ms.ToArray());
doc = null;
ms.Close();
ms.Dispose();
}

NPOI导出word,以及对table的一些设置的更多相关文章

  1. 利用NPOI导出Word文档帮助类

    /// <summary> /// NPOI操作Word /// </summary> public class NpoiWordHelper { /// <summar ...

  2. Html方式导出word 页头和页脚设置

    <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:o ...

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

    前言: 最近使用NPOI做了个导出Word文档的功能,关于使用.NET Core 导出Word文档的方式有很多.最终我为什么选择了NPOI来实现了这个功能,首先是NPOI是一个开源,免费且容易上手的第 ...

  4. NPOI 2.0导出word(docx格式)

    大名鼎鼎的NPOI用来导出EXCEL的文章园子里面有很多,可是用来导出WORD文档的文章大都含糊不清,最近刚好完成一个导出WORD文档的需求,在此分享下. NPOI里面认为word文档的最基本的结构是 ...

  5. C#使用NPOI对Word文档进行导出操作的dll最新版2.5.1

    Npoi导出非模板 最近使用NPOI做了个导出Word文档的功能,因为之前都是导出Excel很方便(不用模板),所以导出Word也选用了Npoi(也没有用模板,

  6. .net使用AsposeWord导出word table表格

    本文为原创,转载请注明出处 1.前言 .net平台下导出word文件还可以使用Microsoft.Office.Interop和NPOI,但是这两者都有缺点,微软的Office.Interop组件需要 ...

  7. NPOI插件生成导出word文档

    因为之前没有接触NPOI过这个插件,所以几乎都是自己一边百度摸索一边学习. 这个插件对于Excel的数据导入和导出,可以说是很方便了, 但是对于导出word文档,可以说是很少的,百度了很多....也不 ...

  8. 使用NPOI2.1.3.1版本导出word附带表格和图片

    原文:http://www.cnblogs.com/afutureBoss/p/4074397.html?utm_source=tuicool&utm_medium=referral 最近项目 ...

  9. 【吉光片羽】MVC 导出Word的两种方式

    1.直接将Html转成Word.MVC自带FileResult很好用.Html中我们也可以嵌入自己的样式. html: <div id="target"> <st ...

随机推荐

  1. ASP.NET 数据库页面访问简单工具

    在工作中,有很多项目已上线后,很多项目的数据库服务器都不会对外开放的,外网想直接访问客户数据库服务器时,可能会出现困难. 这时就需要一个可以查询,更新数据库操作的页面了: 本来用sql语句直接操作数据 ...

  2. VMware NAT模式 Cent OS IP配置

    1:首先VMware 桥接模式 CentOS ip 配置,关键点,ip的网关和DNS1设置成宿主机的网关和DNS 原理:桥接的模式就是通过物理网卡实现的. 2:以图展示VMware NAT模式 Cen ...

  3. undefined reference to `pthread_create'问题解决

    在编译pthread有关的程序时,出现undefined reference to `pthread_create'这样的错误. 问题原因: pthread 库不是 Linux 系统默认的库,连接时需 ...

  4. 实现IHttpModule接口,给每个页面输出一段脚本

    在App_Code文件中添加TGModule.cs using System; using System.Data; using System.Configuration; using System. ...

  5. LTE参考资料

    NETMANIAS TECHNICAL DOCUMENTS: http://www.netmanias.com/en/?m=board&id=techdocs

  6. 树莓派(Rospberry Pi B+)到货亲测

    1 图鉴 Rospberry Pi  B+终于在今天下午有蜗牛快递公司圆*送到了.B+主要是增加了2个USB,增加了GPIO,sd卡换成了micro sd ...先不说直接上图再说,期待了好久好久 整 ...

  7. HTML5 <meta> 标签属性,所有meta用法都在这里了

    基本标签SEO 优化为移动设备添加 viewportWindows 8其他 禁止数字识自动别为电话号码不让android识别邮箱每 8 秒刷新一次页面移动端的头部标签和meta 基本标签 声明文档使用 ...

  8. Linux下vi编辑器粘贴复制剪切功能

    RedHat 9.0 Linux下vi编辑器实现简单的粘贴复制剪切功能": 如果想把文件内的第三行内容黏贴到第十五行: 1.进入你的文件,(处于命令模式,而不是编辑模式) 2.将你的光标移到 ...

  9. Storyboard里面的几种Segue区别和视图的切换

    几种segue:push.modal.popover.replace.cutom. 一.视图切换类型介绍 1.在iPhone和iPad中,segue的类型是不同的. 2.在iPhone中,segue有 ...

  10. dispatchTouchEvent & onInterceptTouchEvent & onTouchEvent

    http://www.cnblogs.com/jqyp/archive/2012/04/25/2469758.html dispatchTouchEvent       分发 onInterceptT ...