最近要做MVC导出Word报表功能。查了查资料发现一个好用的插件就是Aspose.Word。这个插件也很有名气,也很好用。

1.首先就是引用该插件

2.填充Word模版

3.后台操作

  1. private List<double> QuaterAirPM10AvgVolReport(string stns, DateTime start, DateTime end, Aspose.Words.DocumentBuilder builder, out DataTable dt, out List<double> widthList,string isMax)
  2. {
  3. dt = QuaterPM10AvgVol (stns, start, end,isMax);
  4. widthList = new List<double>();
  5. double[] colWidth = new double[] { , , , , , };
  6. string[] colName = new string[] { "排序", "城市", start.Year + "年" + start.Month + "~"+end.Month+"月浓度(μg/m3)", "排序", "城市", "较" + start.AddYears(-).Year + "年同期增幅" };
  7. builder.MoveToBookmark("table3");
  8. Aspose.Words.Tables.Table table = builder.StartTable();//开始画Table
  9. builder.InsertCell();
  10. builder.CellFormat.Borders.LineStyle = LineStyle.Single;
  11. builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
  12. builder.CellFormat.VerticalMerge = CellMerge.First;
  13.  
  14. builder.CellFormat.Width = ;
  15. builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
  16. // builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;
  17. builder.Write("按平均浓度排序");
  18.  
  19. builder.InsertCell();
  20. builder.CellFormat.Borders.LineStyle = LineStyle.Single;
  21. builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
  22. builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
  23. // builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;
  24. builder.CellFormat.VerticalMerge = CellMerge.None;
  25. builder.CellFormat.Width = ;
  26.  
  27. builder.Write("按" + start.AddYears(-).Year + "年同期增幅排序");
  28. builder.EndRow();
  29. AsposeCreateCell(builder, colWidth[], colName[]);
  30. AsposeCreateCell(builder, colWidth[], colName[]);
  31. AsposeCreateCell(builder, colWidth[], colName[]);
  32. AsposeCreateCell(builder, colWidth[], colName[]);
  33. AsposeCreateCell(builder, colWidth[], colName[]);
  34. AsposeCreateCell(builder, colWidth[], colName[]);
  35. builder.EndRow();
  36. //开始添加值
  37. for (var i = ; i < dt.Rows.Count; i++)
  38. {
  39. if (dt.Rows[i]["CityName"] == "12个考核地市" || dt.Rows[i]["CityName"] == "全省")
  40. {
  41. builder.InsertCell();
  42. builder.CellFormat.Borders.LineStyle = LineStyle.Single;
  43. builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
  44. builder.CellFormat.VerticalMerge = CellMerge.First;
  45.  
  46. builder.CellFormat.Width = ;
  47. builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
  48.  
  49. builder.Write(dt.Rows[i]["CityName"].ToString());
  50.  
  51. builder.InsertCell();
  52. builder.CellFormat.Borders.LineStyle = LineStyle.Single;
  53. builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
  54. builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
  55. builder.CellFormat.VerticalMerge = CellMerge.None;
  56. builder.CellFormat.Width = ;
  57. builder.Write(dt.Rows[i]["PM10ATI"].ToString());
  58.  
  59. builder.InsertCell();
  60. builder.CellFormat.Borders.LineStyle = LineStyle.Single;
  61. builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
  62. builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
  63. builder.CellFormat.VerticalMerge = CellMerge.None;
  64. builder.CellFormat.Width = ;
  65. builder.Write(dt.Rows[i]["qnCityName"].ToString());
  66.  
  67. builder.InsertCell();
  68. builder.CellFormat.Borders.LineStyle = LineStyle.Single;
  69. builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
  70. builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
  71. builder.CellFormat.VerticalMerge = CellMerge.None;
  72. builder.CellFormat.Width = ;
  73. builder.Write(dt.Rows[i]["tqbh"].ToString() + "%");
  74.  
  75. }
  76. else
  77. {
  78. AsposeCreateCell(builder, colWidth[], dt.Rows[i]["Sort"].ToString());
  79. AsposeCreateCell(builder, colWidth[], dt.Rows[i]["CityName"].ToString());
  80. AsposeCreateCell(builder, colWidth[], dt.Rows[i]["PM10ATI"].ToString());
  81.  
  82. AsposeCreateCell(builder, colWidth[], dt.Rows[i]["qnSort"].ToString());
  83. AsposeCreateCell(builder, colWidth[], dt.Rows[i]["qnCityName"].ToString());
  84. AsposeCreateCell(builder, colWidth[], dt.Rows[i]["tqbh"].ToString() + "%");
  85.  
  86. }
  87. builder.EndRow();
  88.  
  89. }
  90. builder.EndTable();
  91. return widthList;
  92. }

其中有几个注意的地方 builder.CellFormat.VerticalMerge = CellMerge.None;CellMerge是枚举类型,经常用到画复杂的表格,或者是合并单元格。还有First和Previous。先要得到DataTable数据,最后对数据进行操作就行了。

4.输出文档

  1. public JsonResult QuaterResponse()
  2. {
  3. bool result;
  4. string quarter = Request["quarter"].ToString();
  5. string stns = Request["stns"].ToString();
  6. string isMax = Request["ismax"].ToString();
  7. DateTime startTime = Convert.ToDateTime(Request["startdate"]);
  8. DateTime endTime = Convert.ToDateTime(Request["enddate"]);
  9. string tmppath = Server.MapPath("~/Document/Model/QuaterReport.docx");
  10.  
  11. string path = Server.MapPath("~/Document/Export/QuaterReport.doc");
  12. Aspose.Words.Document doc = new Document(tmppath);
  13. Aspose.Words.DocumentBuilder builder = new DocumentBuilder(doc);
  14. doc.Range.Bookmarks["title"].Text = startTime.Year+"年"+quarter+"湖北省环境空气质量监测情况综述";
  15. doc.Range.Bookmarks["title1"].Text = "表1 "+quarter+"空气质量等级";
  16. doc.Range.Bookmarks["title2"].Text = "表2" +quarter+"优良天数达标率情况表";
  17. doc.Range.Bookmarks["title3"].Text = "表3 "+quarter+"空气可吸入颗粒物(PM10)平均浓度情况表";
  18. doc.Range.Bookmarks["title4"].Text = "表4 "+quarter+"空气可吸入颗粒物(PM2.5)平均浓度情况表";
  19. doc.Range.Bookmarks["title5"].Text = "表5"+quarter+" 境空气气态污染物平均浓度情况表";
  20. doc.Range.Bookmarks["title6"].Text = "表6 "+quarter+"环境空气质量综合指数情况表";
  21. DataTable dt;
  22. List<double> widthList;
  23. try
  24. {
  25.  
  26. doc.Range.Bookmarks["table1"].Text = ""; // 清掉标示
  27. QuaterAirPerencetReport( stns, startTime, endTime, builder, out dt, out widthList,isMax);
  28.  
  29. doc.Range.Bookmarks["table2"].Text = "";
  30. QuaterAirYldblReport(stns, startTime, endTime, builder,quarter, out dt, out widthList,isMax);
  31.  
  32. doc.Range.Bookmarks["table3"].Text = "";
  33. QuaterAirPM10AvgVolReport(stns, startTime, endTime, builder, out dt, out widthList,isMax);
  34. doc.Range.Bookmarks["table4"].Text = "";
  35. QuaterAirPM25AvgVolReport(stns, startTime, endTime, builder, out dt, out widthList,isMax);
  36. doc.Range.Bookmarks["table5"].Text = "";
  37. QuaterOtherAvgVolReport(stns, startTime, endTime, builder, out dt, out widthList,isMax);
  38. doc.Range.Bookmarks["table6"].Text = "";
  39. QuaterZHIndexReport(stns, startTime, endTime, builder, out dt, out widthList,isMax);
  40.  
  41. doc.Save(path, Aspose.Words.SaveFormat.Doc);
  42.  
  43. // System.Diagnostics.Process.Start(path);//打开文档
  44.  
  45. // return View("QuaterReport");
  46. result = true;
  47. }
  48. catch (Exception)
  49. {
  50. result = false;
  51.  
  52. }
  53. return Json(result);
  54.  
  55. }

ASP.NET MVC 导出Word报表的更多相关文章

  1. ASP.NET MVC导出excel

    ASP.NET MVC导出excel 要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式 ...

  2. ASP.NET MVC 导出CSV文件

    ASP.NET MVC   导出CSV文件.直接贴代码 /// <summary> /// ASP.NET MVC导出CSV文件Demo1 /// </summary> /// ...

  3. ASP.NET MVC导出excel(数据量大,非常耗时的,异步导出)

    要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式,后台开辟一个线程将excel导出到指 ...

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

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

  5. asp.net mvc 导出表格

    适合使用的场合: .net 中从前台中的table导出成excel文件,兼容各种浏览器. 使用工具: org.in2bits.MyXls.dll 从前台获取表格的thead和表格的tbody,将其转化 ...

  6. Asp.net MVC 填充word并下载

    使用Aspose.word填充内容并下载(免费版Aspose) 填充固定模式的Word文档,需要先制作Word模板: Aspose.Words主要通过Words里域(Fields)来控制内容.     ...

  7. ASP.NET MVC导出excel npoi

    使用npoi组件 前端代码: @Html.ActionLink("导出Excel", "ExportWarehouseInOutDetailTable", ne ...

  8. asp.net MVC 导出查询结果到Excel

    首先在View视图中有一表单form,导出按钮<input class="btn export" type="button" value="导出 ...

  9. asp.net mvc导出execl_转载

    public FileResult ExportExcel() { var sbHtml = new StringBuilder(); sbHtml.Append("<table bo ...

随机推荐

  1. MySQL-基本sql命令

    关于环境的搭建和数据库的连接,我直接跳过,假设电脑上已经安装好了MySQL的环境,接下来直接进行数据库的操作:(虽然数据库不区分大小写,但是本文约定:命令用大写,用户变量和字段用小写) 1.创建数据库 ...

  2. 4、安卓数据存储——sqlite

    朋友圈里的每一个消息体里面的数据,当下拉刷新从服务器下载数据包后,存入sqlite:用户名.图片url.点赞.评论等等.上拉加载的时候,从数据库里取出最近的5条数据加载到朋友圈上. Android通过 ...

  3. 使用nodejs爬取和讯网高管增减持数据

    为了抓取和讯网高管增减持的数据,首先得分析一下数据的来源: 网址: http://stockdata.stock.hexun.com/ggzjc/history.shtml 使用chrome开发者工具 ...

  4. ios framework 开发 之 实战二 ,成功

    1. 新建工程.引入cocoapod略过不提 2. 更改cocoapod类名 这是因为,引用framework的工程中,也有一个同样的文件,及文件里同样的类. 这个文件不能删除,但是可以重命名. 3. ...

  5. mySql 分段查询

    准备: 创建一个成绩表 Create table grade (id integer, score integer); 插入数据(只有id每次加一,score是1到100的随机数,java生成): p ...

  6. IOS Cell重用机制

    重用机制: -(UITableViewCell *)tableView: (UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *) ...

  7. Spring 之 示例(Java之负基础实战)

    接 Spring 之 配置 里面的代码. 现在要进行Controller的开发. 1.引用类 import org.springframework.web.servlet.mvc.Controller ...

  8. 简单的shared_ptr实现

    RT,代码参考了STL中shard_ptr的实现,基本原理是引用计数,利用Ref_cnt类来管理内存,在shared_ptr创建时创建,此后shared_ptr仅是在拷贝复制析构的过程中对引用进行修改 ...

  9. 定制jackson的自定义序列化(null值的处理)

    http://www.cnblogs.com/lic309/p/5048631.html

  10. swift Alamofire请求数据与SwiftJson解析

    一直在研究swift 程序最重要的是什么???答案当然是数据啦.  数据对一个程序的影响有多大自己想去吧!!!如果你非要说不重要,那你现在就可以关网页了  哈哈哈哈哈 我呢  swift新手  菜鸟一 ...