zoukankan      html  css  js  c++  java
  • Asp.Net MVC 使用FileResult导出Excel数据文件

     

    用的是Html拼接成Table表格的方式,返回 FileResult 输出一个二进制的文件.

    第一种:使用FileContentResult

    复制代码
            //
            // 摘要:
            //     通过使用文件内容,内容类型,文件名称创建一个FileContentResult对象//
            // 参数:
            //   fileContents:
            //     响应的二进制文件内容
            //
            //   contentType:
            //     内容类型(MIME类型)
            //
            //   fileDownloadName:
            //     显示在浏览器下载窗口的文件名称//
            // 返回结果:
            //     文件内容对象.
            protected internal virtual FileContentResult File(byte[] fileContents, string contentType, string fileDownloadName);
    复制代码

    需要将文件内容转化成字节数组byte[]

            byte[] fileContents = Encoding.Default.GetBytes(sbHtml.ToString());

    第二种:使用FileStreamResult

    复制代码
            // 其他参数描述同FileContentResult
            // 参数:
            //   fileStream:
            //     响应的流
            // 
            // 返回结果:
            //     文件流对象.
            protected internal virtual FileStreamResult File(Stream fileStream, string contentType, string fileDownloadName);
    复制代码

    需要将文件内容转化成流

            var fileStream = new MemoryStream(fileContents);

    第三种:使用FilePathResult

    复制代码
            // 其他参数描述同FileContentResult
            // 参数:
            //   fileName:
            //     响应的文件路径
            //
            // 返回结果:
            //     文件流对象.
         protected internal virtual FilePathResult File(string fileName, string contentType, string fileDownloadName);
    复制代码

    服务器上首先必须要有这个Excel文件,然会通过Server.MapPath获取路径返回.

    具体详情请看代码.

    复制代码
     1         public FileResult ExportExcel()
     2         {
     3             var sbHtml = new StringBuilder();
     4             sbHtml.Append("<table border='1' cellspacing='0' cellpadding='0'>");
     5             sbHtml.Append("<tr>");
     6             var lstTitle = new List<string> { "编号", "姓名", "年龄", "创建时间" };
     7             foreach (var item in lstTitle)
     8             {
     9                 sbHtml.AppendFormat("<td style='font-size: 14px;text-align:center; font-weight:bold;' height='25'>{0}</td>", item);
    10             }
    11             sbHtml.Append("</tr>");
    12 
    13             for (int i = 0; i < 1000; i++)
    14             {
    15                 sbHtml.Append("<tr>");
    16                 sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>{0}</td>", i);
    17                 sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>屌丝{0}号</td>", i);
    18                 sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>{0}</td>", new Random().Next(20, 30) + i);
    19                 sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>{0}</td>", DateTime.Now);
    20                 sbHtml.Append("</tr>");
    21             }
    22             sbHtml.Append("</table>");
    23 
    24             //第一种:使用FileContentResult
    25             byte[] fileContents = Encoding.Default.GetBytes(sbHtml.ToString());
    26             return File(fileContents, "application/ms-excel", "fileContents.xls");
    27 
    28             //第二种:使用FileStreamResult
    29             var fileStream = new MemoryStream(fileContents);
    30             return File(fileStream, "application/ms-excel", "fileStream.xls");
    31 
    32             //第三种:使用FilePathResult
    33             //服务器上首先必须要有这个Excel文件,然会通过Server.MapPath获取路径返回.
    34             var fileName = Server.MapPath("~/Files/fileName.xls");
    35             return File(fileName, "application/ms-excel", "fileName.xls");
    36         }
    复制代码
  • 相关阅读:
    初认识AngularJS
    (imcomplete) UVa 10127 Ones
    UVa 10061 How many zero's and how many digits?
    UVa 11728 Alternate Task
    UVa 11490 Just Another Problem
    UVa 10673 Play with Floor and Ceil
    JSON对象和字符串的收发(JS客户端用typeof()进行判断非常重要)
    HTML.ActionLink 和 Url.Action 的区别
    EASYUI TREE得到当前节点数据的GETDATA方法
    jqueery easyui tree把已选中的节点数据拼成json或者数组(非常重要)
  • 原文地址:https://www.cnblogs.com/jearay/p/5103452.html
Copyright © 2011-2022 走看看