适合使用的场合:

.net 中从前台中的table导出成excel文件,兼容各种浏览器。

使用工具:

org.in2bits.MyXls.dll

从前台获取表格的thead和表格的tbody,将其转化为字符串,用逗号隔开

html:

<div class="printContent">
<table cellspacing="1" class="tablesorter table-04">
<thead>
<tr><th>校友会编号</th><th>校友会名称</th><th>常设办事处</th><th>主席姓名</th><th>联系电话</th><th>建会时间</th><th>总人数</th><th>依托学院</th></tr>
</thead>
<tfoot>
<tr><th>校友会编号</th><th>校友会名称</th><th>常设办事处</th><th>主席姓名</th><th>联系电话</th><th>建会时间</th><th>总人数</th><th>依托学院</th></tr>
</tfoot>
<tbody>
@foreach (var l in Model)
{
<tr id="@(l.XYHBH)"><td>@(l.XYHBH)</td><td>@(l.XYHMC)</td><td>@(l.BGSDZ)</td><td>@(l.XYHZX)</td><td>@(l.LXDH)</td><td>@(DAL.IsNull.ShortDateNull(l.CJSJ.ToString()))</td><td>@(l.HYZS)</td><td>@(BLL.ZYGLMK.XX_YXSJBQK.GetYXMC(l.YXSH))</td></tr>
}
</tbody>
</table></div>

javascript:

var heads = "";
var bodys = "";
var i = 0;
//获取title内容,每一空以,隔开
$(".printContent table thead tr th").each(function () {
heads = heads + $(this).text() + ",";
i++;
});
i = 0;
//获取tbody内容,每一空以,隔开
$(".printContent table tbody tr td").each(function () {
bodys = bodys + $(this).text() + ",";
i++;
});
//发送请求,传表格内容
$.post("/Shared/ExportExcel", { head: heads, body: bodys }, function (data) {
//创建表格成功,保存在服务器
if (data == "1") {
//访问服务器指定文件,下载表格
window.location.href = "/Shared/DownLoadExcel"; }
});

引用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using org.in2bits.MyXls;

ExportExcel:

//导出excel文件
#region 导出Excel
public int ExportExcel(string head, string body)
{
//将字符串拆分成数组,获取每一个单元格内容
string[] heads = head.Split(',');
string[] bodys = body.Split(',');
XlsDocument xls = new XlsDocument();
//文件名称
xls.FileName = "excel.xls";
//excel作者
xls.SummaryInformation.Author = Session["UID"].ToString().Trim();
//主题
xls.SummaryInformation.Subject = "LIIP&A";
//公司
xls.DocumentSummaryInformation.Company = "Intelligent Information Processing and Application Lab";
int len = heads.Length - 1;
//excel中sheet名称
string sheetName = Session["UID"].ToString().Trim();
int colCount = len;//总列数
int rowCount = bodys.Length / len;//总行数
Worksheet sheet = xls.Workbook.Worksheets.AddNamed(sheetName);
Cells cells = sheet.Cells;
int t = 0;
//生成excel表格内容,从第0行到len-1行
for (int r = 0; r <= rowCount; r++)
{
//第一行(title)
if (r == 0)
{
for (int c = 0; c < colCount; c++)
{
//在一行内创建colCount个单元格,第1+r行第1+c列的值为heads[c]
cells.Add(1 + r, 1 + c, heads[c]).
Font.Bold = true;//字体加粗
}
}
else //表示正文
{
for (int c = 0; c < colCount; c++)
{
cells.Add(1+r,1+c,bodys[t]);
t++;
}
}
}
//保存到服务器
xls.Save(Server.MapPath("/Content"),true);
return 1;
} //文件下载
public FileResult DownLoadExcel()
{
return File(Server.MapPath("/Content/excel.xls"), "application/ms-excel","excel.xls");
}

asp.net mvc 导出表格的更多相关文章

  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. ASP.NET MVC 导出Word报表

    最近要做MVC导出Word报表功能.查了查资料发现一个好用的插件就是Aspose.Word.这个插件也很有名气,也很好用. 1.首先就是引用该插件 2.填充Word模版 3.后台操作 private ...

  5. ASP.NET MVC 之表格分页

    简单效果图:(框架:MVC+NHibernate) 要点: (1)首先建立表格分页Model(GridModel.cs) (2)然后建立数据展示页(PageCloth.cshtml) (3)再建分页版 ...

  6. 在asp.net中导出表格Excel数据

    第一步:需要引用org.in2bits.MyXls程序集到使用页面 第二步:前台代码 <asp:Button ID="LeadingOut" runat="serv ...

  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. jQuery如何设置自增自减值

    一直不是很记得jquery中怎么设置自增值,比如当点击按钮时 div在当前宽度基础上增加宽度100px,可以这样写: $('button.test').click(function(){ $('div ...

  2. Qt 5.x 全局热键 for windows

    Qt 升级到5.x版本后,QAbstractEventDispatcher中函数发生变动,导致libqxt库中的qxtGlobalShortcut挂掉.参考qxtGlobalShortcut写了一个全 ...

  3. 浅析Linux的软中断的实现

    參考: http://bbs.chinaunix.net/thread-2333484-1-1.html http://liu1227787871.blog.163.com/blog/static/2 ...

  4. Android:创建可穿戴应用 - 安装和依赖管理

    安装可穿戴应用 在开发时,你能够像一般移动应用一样直接把应用安装到可穿戴设备中. 使用adb install或者 Android Studio上的Play button. 当你准备好要公布时,你须要把 ...

  5. java中可以出现的中文乱码的集中解决

    从学习javaweb开始就会经常遇到中文乱码,今天就做以下记录: 1. 要避免项目中遇到乱码,首先就是在搭建项目的设置工作空间的字符编码,若是多人开发,就更应该做到统一,在eclipse中选择widn ...

  6. Linux内核-系统调用

    Linux内核-系统调用 1.与内核通信 #系统调用在用户空间进程和硬件设备之间添加了一个中间层 作用:1.为用户空间提供了一种硬件的抽象接口 2.系统调用保证了系统的稳定和安全 3.出于每一个进程都 ...

  7. mysql导入sql文件过大或连接超时的解决的方法

    前段时间出差在现场开发的时候,导入数据库老是出问题.最后发现了一个奇妙sql语句交给实施,仅仅要导入出错就把例如以下语句运行就能够了.至今屡试不爽. set global max_allowed_pa ...

  8. BZOJ 1592: [Usaco2008 Feb]Making the Grade 路面修整( dp )

    最优的做法最后路面的高度一定是原来某一路面的高度. dp(x, t) = min{ dp(x - 1, k) } + | H[x] - h(t) | ( 1 <= k <= t ) 表示前 ...

  9. 教师简介 (Alma Del Tango的小站)

    教师简介 (Alma Del Tango的小站) Esteban Peng (TT) & Emilia Jia (Amy) TT和Amy是北京极具影响力的专业舞者,他们从07年开始推广阿根廷探 ...

  10. hdu3999The order of a Tree (二叉平衡树(AVL))

    Problem Description As we know,the shape of a binary search tree is greatly related to the order of ...