ASP.NET MVC 导出Word报表
最近要做MVC导出Word报表功能。查了查资料发现一个好用的插件就是Aspose.Word。这个插件也很有名气,也很好用。
1.首先就是引用该插件
2.填充Word模版
3.后台操作
- private List<double> QuaterAirPM10AvgVolReport(string stns, DateTime start, DateTime end, Aspose.Words.DocumentBuilder builder, out DataTable dt, out List<double> widthList,string isMax)
- {
- dt = QuaterPM10AvgVol (stns, start, end,isMax);
- widthList = new List<double>();
- double[] colWidth = new double[] { , , , , , };
- string[] colName = new string[] { "排序", "城市", start.Year + "年" + start.Month + "~"+end.Month+"月浓度(μg/m3)", "排序", "城市", "较" + start.AddYears(-).Year + "年同期增幅" };
- builder.MoveToBookmark("table3");
- Aspose.Words.Tables.Table table = builder.StartTable();//开始画Table
- builder.InsertCell();
- builder.CellFormat.Borders.LineStyle = LineStyle.Single;
- builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
- builder.CellFormat.VerticalMerge = CellMerge.First;
- builder.CellFormat.Width = ;
- builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
- // builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;
- builder.Write("按平均浓度排序");
- builder.InsertCell();
- builder.CellFormat.Borders.LineStyle = LineStyle.Single;
- builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
- builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
- // builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;
- builder.CellFormat.VerticalMerge = CellMerge.None;
- builder.CellFormat.Width = ;
- builder.Write("按" + start.AddYears(-).Year + "年同期增幅排序");
- builder.EndRow();
- AsposeCreateCell(builder, colWidth[], colName[]);
- AsposeCreateCell(builder, colWidth[], colName[]);
- AsposeCreateCell(builder, colWidth[], colName[]);
- AsposeCreateCell(builder, colWidth[], colName[]);
- AsposeCreateCell(builder, colWidth[], colName[]);
- AsposeCreateCell(builder, colWidth[], colName[]);
- builder.EndRow();
- //开始添加值
- for (var i = ; i < dt.Rows.Count; i++)
- {
- if (dt.Rows[i]["CityName"] == "12个考核地市" || dt.Rows[i]["CityName"] == "全省")
- {
- builder.InsertCell();
- builder.CellFormat.Borders.LineStyle = LineStyle.Single;
- builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
- builder.CellFormat.VerticalMerge = CellMerge.First;
- builder.CellFormat.Width = ;
- builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
- builder.Write(dt.Rows[i]["CityName"].ToString());
- builder.InsertCell();
- builder.CellFormat.Borders.LineStyle = LineStyle.Single;
- builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
- builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
- builder.CellFormat.VerticalMerge = CellMerge.None;
- builder.CellFormat.Width = ;
- builder.Write(dt.Rows[i]["PM10ATI"].ToString());
- builder.InsertCell();
- builder.CellFormat.Borders.LineStyle = LineStyle.Single;
- builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
- builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
- builder.CellFormat.VerticalMerge = CellMerge.None;
- builder.CellFormat.Width = ;
- builder.Write(dt.Rows[i]["qnCityName"].ToString());
- builder.InsertCell();
- builder.CellFormat.Borders.LineStyle = LineStyle.Single;
- builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
- builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
- builder.CellFormat.VerticalMerge = CellMerge.None;
- builder.CellFormat.Width = ;
- builder.Write(dt.Rows[i]["tqbh"].ToString() + "%");
- }
- else
- {
- AsposeCreateCell(builder, colWidth[], dt.Rows[i]["Sort"].ToString());
- AsposeCreateCell(builder, colWidth[], dt.Rows[i]["CityName"].ToString());
- AsposeCreateCell(builder, colWidth[], dt.Rows[i]["PM10ATI"].ToString());
- AsposeCreateCell(builder, colWidth[], dt.Rows[i]["qnSort"].ToString());
- AsposeCreateCell(builder, colWidth[], dt.Rows[i]["qnCityName"].ToString());
- AsposeCreateCell(builder, colWidth[], dt.Rows[i]["tqbh"].ToString() + "%");
- }
- builder.EndRow();
- }
- builder.EndTable();
- return widthList;
- }
其中有几个注意的地方 builder.CellFormat.VerticalMerge = CellMerge.None;CellMerge是枚举类型,经常用到画复杂的表格,或者是合并单元格。还有First和Previous。先要得到DataTable数据,最后对数据进行操作就行了。
4.输出文档
- public JsonResult QuaterResponse()
- {
- bool result;
- string quarter = Request["quarter"].ToString();
- string stns = Request["stns"].ToString();
- string isMax = Request["ismax"].ToString();
- DateTime startTime = Convert.ToDateTime(Request["startdate"]);
- DateTime endTime = Convert.ToDateTime(Request["enddate"]);
- string tmppath = Server.MapPath("~/Document/Model/QuaterReport.docx");
- string path = Server.MapPath("~/Document/Export/QuaterReport.doc");
- Aspose.Words.Document doc = new Document(tmppath);
- Aspose.Words.DocumentBuilder builder = new DocumentBuilder(doc);
- doc.Range.Bookmarks["title"].Text = startTime.Year+"年"+quarter+"湖北省环境空气质量监测情况综述";
- doc.Range.Bookmarks["title1"].Text = "表1 "+quarter+"空气质量等级";
- doc.Range.Bookmarks["title2"].Text = "表2" +quarter+"优良天数达标率情况表";
- doc.Range.Bookmarks["title3"].Text = "表3 "+quarter+"空气可吸入颗粒物(PM10)平均浓度情况表";
- doc.Range.Bookmarks["title4"].Text = "表4 "+quarter+"空气可吸入颗粒物(PM2.5)平均浓度情况表";
- doc.Range.Bookmarks["title5"].Text = "表5"+quarter+" 境空气气态污染物平均浓度情况表";
- doc.Range.Bookmarks["title6"].Text = "表6 "+quarter+"环境空气质量综合指数情况表";
- DataTable dt;
- List<double> widthList;
- try
- {
- doc.Range.Bookmarks["table1"].Text = ""; // 清掉标示
- QuaterAirPerencetReport( stns, startTime, endTime, builder, out dt, out widthList,isMax);
- doc.Range.Bookmarks["table2"].Text = "";
- QuaterAirYldblReport(stns, startTime, endTime, builder,quarter, out dt, out widthList,isMax);
- doc.Range.Bookmarks["table3"].Text = "";
- QuaterAirPM10AvgVolReport(stns, startTime, endTime, builder, out dt, out widthList,isMax);
- doc.Range.Bookmarks["table4"].Text = "";
- QuaterAirPM25AvgVolReport(stns, startTime, endTime, builder, out dt, out widthList,isMax);
- doc.Range.Bookmarks["table5"].Text = "";
- QuaterOtherAvgVolReport(stns, startTime, endTime, builder, out dt, out widthList,isMax);
- doc.Range.Bookmarks["table6"].Text = "";
- QuaterZHIndexReport(stns, startTime, endTime, builder, out dt, out widthList,isMax);
- doc.Save(path, Aspose.Words.SaveFormat.Doc);
- // System.Diagnostics.Process.Start(path);//打开文档
- // return View("QuaterReport");
- result = true;
- }
- catch (Exception)
- {
- result = false;
- }
- return Json(result);
- }
ASP.NET MVC 导出Word报表的更多相关文章
- ASP.NET MVC导出excel
ASP.NET MVC导出excel 要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式 ...
- ASP.NET MVC 导出CSV文件
ASP.NET MVC 导出CSV文件.直接贴代码 /// <summary> /// ASP.NET MVC导出CSV文件Demo1 /// </summary> /// ...
- ASP.NET MVC导出excel(数据量大,非常耗时的,异步导出)
要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式,后台开辟一个线程将excel导出到指 ...
- 【吉光片羽】MVC 导出Word的两种方式
1.直接将Html转成Word.MVC自带FileResult很好用.Html中我们也可以嵌入自己的样式. html: <div id="target"> <st ...
- asp.net mvc 导出表格
适合使用的场合: .net 中从前台中的table导出成excel文件,兼容各种浏览器. 使用工具: org.in2bits.MyXls.dll 从前台获取表格的thead和表格的tbody,将其转化 ...
- Asp.net MVC 填充word并下载
使用Aspose.word填充内容并下载(免费版Aspose) 填充固定模式的Word文档,需要先制作Word模板: Aspose.Words主要通过Words里域(Fields)来控制内容. ...
- ASP.NET MVC导出excel npoi
使用npoi组件 前端代码: @Html.ActionLink("导出Excel", "ExportWarehouseInOutDetailTable", ne ...
- asp.net MVC 导出查询结果到Excel
首先在View视图中有一表单form,导出按钮<input class="btn export" type="button" value="导出 ...
- asp.net mvc导出execl_转载
public FileResult ExportExcel() { var sbHtml = new StringBuilder(); sbHtml.Append("<table bo ...
随机推荐
- MySQL-基本sql命令
关于环境的搭建和数据库的连接,我直接跳过,假设电脑上已经安装好了MySQL的环境,接下来直接进行数据库的操作:(虽然数据库不区分大小写,但是本文约定:命令用大写,用户变量和字段用小写) 1.创建数据库 ...
- 4、安卓数据存储——sqlite
朋友圈里的每一个消息体里面的数据,当下拉刷新从服务器下载数据包后,存入sqlite:用户名.图片url.点赞.评论等等.上拉加载的时候,从数据库里取出最近的5条数据加载到朋友圈上. Android通过 ...
- 使用nodejs爬取和讯网高管增减持数据
为了抓取和讯网高管增减持的数据,首先得分析一下数据的来源: 网址: http://stockdata.stock.hexun.com/ggzjc/history.shtml 使用chrome开发者工具 ...
- ios framework 开发 之 实战二 ,成功
1. 新建工程.引入cocoapod略过不提 2. 更改cocoapod类名 这是因为,引用framework的工程中,也有一个同样的文件,及文件里同样的类. 这个文件不能删除,但是可以重命名. 3. ...
- mySql 分段查询
准备: 创建一个成绩表 Create table grade (id integer, score integer); 插入数据(只有id每次加一,score是1到100的随机数,java生成): p ...
- IOS Cell重用机制
重用机制: -(UITableViewCell *)tableView: (UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *) ...
- Spring 之 示例(Java之负基础实战)
接 Spring 之 配置 里面的代码. 现在要进行Controller的开发. 1.引用类 import org.springframework.web.servlet.mvc.Controller ...
- 简单的shared_ptr实现
RT,代码参考了STL中shard_ptr的实现,基本原理是引用计数,利用Ref_cnt类来管理内存,在shared_ptr创建时创建,此后shared_ptr仅是在拷贝复制析构的过程中对引用进行修改 ...
- 定制jackson的自定义序列化(null值的处理)
http://www.cnblogs.com/lic309/p/5048631.html
- swift Alamofire请求数据与SwiftJson解析
一直在研究swift 程序最重要的是什么???答案当然是数据啦. 数据对一个程序的影响有多大自己想去吧!!!如果你非要说不重要,那你现在就可以关网页了 哈哈哈哈哈 我呢 swift新手 菜鸟一 ...