asp.net mvc 导出表格

适合使用的场合:

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

使用工具:

org.in2bits.MyXls.dll

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

html:

@foreach (var l in Model) { }
校友会编号校友会名称常设办事处主席姓名联系电话建会时间总人数依托学院
校友会编号校友会名称常设办事处主席姓名联系电话建会时间总人数依托学院
@(l.XYHBH)@(l.XYHMC)@(l.BGSDZ)@(l.XYHZX)@(l.LXDH)@(DAL.IsNull.ShortDateNull(l.CJSJ.ToString()))@(l.HYZS)@(BLL.ZYGLMK.XX_YXSJBQK.GetYXMC(l.YXSH))


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");
        }

你可能感兴趣的:(C#,网页)