public FileResult ExportExcels(string StartTime, string EndTime, string SendType)
{

List<SMSSExportExcelsModel> list = new UserReturnSMSBLL().SMSStatistics(SendType, StartTime, EndTime);

byte[] fileContents = GetExcel(list);
return File(fileContents, "application/vnd.ms-excel", "测试名字" + DateTime.Now.ToString("yyyMMddhhmmssms") + ".xls");
}
public byte[] GetExcel(List<SMSSExportExcelsModel> list)
{
HSSFWorkbook hssfworkbook;
if (list.Count() > 0)
{
hssfworkbook = new HSSFWorkbook();
ISheet sheet = hssfworkbook.CreateSheet("用户回流");
sheet.SetColumnWidth(0, 20 * 200);//列宽
sheet.SetColumnWidth(1, 20 * 200);//列宽

ICellStyle style1 = hssfworkbook.CreateCellStyle();//样式
IFont font1 = hssfworkbook.CreateFont();//字体
font1.Color = HSSFColor.Black.Index;//字体颜色
font1.Boldweight = (short)FontBoldWeight.Bold;//字体加粗样式
style1.SetFont(font1);//样式里的字体设置具体的字体样式
style1.Alignment = HorizontalAlignment.Right;//文字水平对齐方式
style1.VerticalAlignment = VerticalAlignment.Center;//文字垂直对齐方式

IRow row = sheet.CreateRow(0);
row.Height = 400;//行高

var lstTitle = new List<string> {"推送手机号码", "类型", "奖品", "短信内容", "最后一次打开时间", "推送时间" };
for (int i = 0; i < lstTitle.Count; i++)
{
ICell cel0 = row.CreateCell(i);
cel0.SetCellValue(lstTitle[i].ToString());
cel0.CellStyle.Alignment = HorizontalAlignment.Right;//设置对齐
cel0.CellStyle = style1;//单元格式设置样式
}
int j = 1;
for (int i = 0; i < list.Count; i++)
{
IRow rows = sheet.CreateRow(j);
rows.Height = 330;//行高
j++;
ICell cell0 = rows.CreateCell(0);
cell0.SetCellValue(list[i].u_phone);
ICell cell1 = rows.CreateCell(1);
cell1.SetCellValue(list[i].u_push_days);
ICell cell2 = rows.CreateCell(2);
cell2.SetCellValue(list[i].u_prize);
ICell cell3 = rows.CreateCell(3);
cell3.SetCellValue(list[i].u_content);
ICell cell4 = rows.CreateCell(4);
cell4.SetCellValue(list[i].u_open_app_time.ToString());
ICell cell5 = rows.CreateCell(5);
cell5.SetCellValue(list[i].c_addtime.ToString());
}
MemoryStream stream = new MemoryStream();
hssfworkbook.Write(stream);
stream.Seek(0, SeekOrigin.Begin);
byte[] file = stream.ToArray();
stream.Close();
return file;
}
return null;
}

第二种 这种容易出现乱码

List<SMSSExportExcelsModel> list = new UserReturnSMSBLL().SMSStatistics(SendType, StartTime, EndTime);
#region

var sbHtml = new StringBuilder();
 sbHtml.Append("<table border='1' cellspacing='0' cellpadding='0'>");
sbHtml.Append("<tr>");
var lstTitle = new List<string> { "推送手机号码", "类型", "奖品", "短信内容", "最后一次打开时间", "推送时间" };
foreach (var item in lstTitle)
{
 sbHtml.AppendFormat("<td style='font-size: 14px;text-align:center;background-color: #DCE0E2; font-weight:bold;' height='25'>{0}</td>", item);
}
sbHtml.Append("</tr>");
for (int i = 0; i < list.Count; i++)
{
 sbHtml.Append("<tr>");
 sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>{0}</td>", list[i].u_phone);
 sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>{0}</td>", list[i].u_push_days);
 sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>{0}</td>", list[i].u_prize);
 sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>{0}</td>", list[i].u_content);
 sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>{0}</td>", list[i].u_open_app_time);
 sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>{0}</td>", list[i].c_addtime);
 sbHtml.Append("</tr>");
}
sbHtml.Append("</table>");

//第一种:使用FileContentResult
byte[] fileContents = Encoding.Default.GetBytes(sbHtml.ToString());
return File(fileContents, "application/vnd.ms-excel", "用户回流" + DateTime.Now.ToString("yyyMMddhhmmssms") + ".xls");

//第二种:使用FileStreamResult
////var fileStream = new MemoryStream(fileContents);
////return File(fileStream, "application/ms-excel", "fileStream.xls");
#endregion

C#导出excel的更多相关文章

  1. C#使用Aspose.Cells导出Excel简单实现

    首先,需要添加引用Aspose.Cells.dll,官网下载地址:http://downloads.aspose.com/cells/net 将DataTable导出Xlsx格式的文件下载(网页输出) ...

  2. 利用poi导出Excel

    import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.r ...

  3. [django]数据导出excel升级强化版(很强大!)

    不多说了,原理采用xlwt导出excel文件,所谓的强化版指的是实现在网页上选择一定条件导出对应的数据 之前我的博文出过这类文章,但只是实现导出数据,这次左思右想,再加上网上的搜索,终于找出方法实现条 ...

  4. NPOI导出Excel

    using System;using System.Collections.Generic;using System.Linq;using System.Text;#region NPOIusing ...

  5. ASP.NET Core 导入导出Excel xlsx 文件

    ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...

  6. asp.net DataTable导出Excel 自定义列名

    1.添加引用NPOI.dll 2.cs文件头部添加 using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.IO; 3.代码如 ...

  7. Aspose.Cells导出Excel(1)

    利用Aspose.Cells导出excel 注意的问题 1.DataTable的处理 2.进行编码,便于中文名文件下载 3.别忘了Aspose.Cells.dll(可以自己在网上搜索) public ...

  8. 前端导出Excel兼容写法

    今天整理出在Web前端导出Excel的写法,写了一个工具类,对各个浏览器进行了兼容. 首先,导出的数据来源可能有两种: 1. 页面的HTML内容(一般是table) 2. 纯数据 PS:不同的数据源, ...

  9. JS导出excel 兼容ie、chrome、firefox

    运用js实现将页面中的table导出为excel文件,页面显示如下: 导出的excel文件显示如下: 实现代码: <!DOCTYPE html> <html> <head ...

  10. Oracle导出excel

    oracle导出excel(非csv)的方法有两种,1.使用sqlplus  spool,2.使用包体 现将网上相关代码整理后贴出以备不时之需: 使用sqlplus: 使用sqlplus需要两个文件: ...

随机推荐

  1. C# 窗体

    窗体的事件:删除事件:先将事件页面里面的挂好的事件删除,再删后台代码里面的事件 Panel是一个容器 1.Label -- 文本显示工具Text:显示的文字取值.赋值:lable1.Text 2.Te ...

  2. windows安装TortoiseGit详细使用教程

    标签:tortoisegit 环境:win8.1 64bit 安装准备: 首先你得安装windows下的git msysgit1.9.5 别下载错,不习惯英文的朋友,也可以下个语言包] 一.安装图解: ...

  3. 旋转toast 自定义toast方向,支持多个方向的显示,自定义View

    package com.example.canvasdemo; import java.security.InvalidAlgorithmParameterException; import andr ...

  4. (九)串行口方式0 拓展并行输出端口 02 74LS164芯片

    1.先讲解74LS164 移位芯片: 74HC164.74HCT164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出. 数据通过两个输入端(DSA 或 DSB)之一串行输入:任一输入端可 ...

  5. 关于Beta分布、二项分布与Dirichlet分布、多项分布的关系

    在机器学习领域中,概率模型是一个常用的利器.用它来对问题进行建模,有几点好处:1)当给定参数分布的假设空间后,可以通过很严格的数学推导,得到模型的似然分布,这样模型可以有很好的概率解释:2)可以利用现 ...

  6. 新建Java文件的 文档注释

    /** * <br> * ============================================= * * @author : Liuyc * @company : 版权 ...

  7. 几个精彩的DMV

    --统计表的增删改次数,反映表的使用程度 SELECT DB_NAME([database_id]) AS [Database] ,iops.[object_id] AS [ObjectID] ,QU ...

  8. 关于block使用的5点注意事项

    1.在使用block前需要对block指针做判空处理. 不判空直接使用,一旦指针为空直接产生崩溃. if (!self.isOnlyNet) { if (succBlock == NULL) { // ...

  9. 33、mybatis(二)

    第十六章回顾SQL99中的连接查询 1)内连接 2)外连接 3)自连接 第十七章回顾hibernate多表开发 1)一对一 2)一对多 3)多对多 第十八章 mybatis一对一映射[学生与身份证] ...

  10. Just a Hook(HDU1698 线段树的简单应用)

    Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Prob ...