一、准备工作

引用:Microsoft.Office.Interop.Excel

准备多个DataTable数据添加到DataSet中。

二、代码

public void CreateExcel(DataSet ds, string filePath)
{
//创建excel运行环境
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook ExcelWorkBook = null;
Microsoft.Office.Interop.Excel.Worksheet ExcelWorkSheet = null; ExcelApp.Visible = true;
ExcelWorkBook = ExcelApp.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
//创建excel的sheet名称
List<string> SheetNames = new List<string>();
SheetNames.Add("人力数据分析");
SheetNames.Add("性别");
SheetNames.Add("省份");
SheetNames.Add("城市");
SheetNames.Add("页面访问人数(每天)");
SheetNames.Add("每天具体数据(小时)");
for (int i = ; i < ds.Tables.Count; i++)
ExcelWorkBook.Worksheets.Add(); //添加新的sheet到excel中 for (int i = ; i < ds.Tables.Count; i++)
{
int r = ; // 初始化excel的第一行Position=1 ExcelWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ExcelWorkBook.Worksheets[i + ]; //样式设置
var range = ExcelWorkSheet.get_Range("A1", "K1");
range.Font.Size = ;
range.Font.Name = "黑体";
range.ColumnWidth = ; //设置单元格的宽度 //把列的名字写进sheet内
for (int col = ; col <= ds.Tables[i].Columns.Count; col++)
ExcelWorkSheet.Cells[r, col] = ds.Tables[i].Columns[col - ].ColumnName;
r++; //把每一行写进excel的sheet中
for (int row = ; row < ds.Tables[i].Rows.Count; row++) //r是excelRow,col是excelColumn
{ //Excel的行和列开始位置写Row=1 ,Col=1
for (int col = ; col <= ds.Tables[i].Columns.Count; col++)
ExcelWorkSheet.Cells[r, col] = ds.Tables[i].Rows[row][col - ].ToString();
r++;
}
ExcelWorkSheet.Name = SheetNames[i]; } ExcelWorkBook.SaveAs(filePath);
ExcelWorkBook.Close();
ExcelApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(ExcelWorkSheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(ExcelWorkBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(ExcelApp);
GC.Collect();
foreach (System.Diagnostics.Process process in System.Diagnostics.Process.GetProcessesByName("Excel"))
process.Kill();
}

三、实现跟谷歌类似文件下载后在最下方显示下载的文件

public ActionResult OutPutExcel()
{
ILog log = LogManager.GetLogger(typeof(SystemSetController)); try
{
DateTime beginTime = Convert.ToDateTime(Request.Form["LiveBeginTime"]);
DateTime endTime = Convert.ToDateTime(Request.Form["LiveEndTime"]);
long liveId = Convert.ToInt32(Request.Form["liveId"]);
//生成的Excel名称
string fileName = string.Format("{0}.xlsx", DateTime.Now.ToString(@"yyyy-MM-dd-HHmmss"));
//获取数据
DataSet ds = _SystemSetBLL.GetLiveAnalysis(beginTime, endTime, liveId);
var filePath = Server.MapPath("~/UploadFile/file/" + fileName);
//生成EXCEL
_SystemSetBLL.CreateExcel(ds, filePath);
Response.Clear();
Response.Charset = "utf-8";
Response.HeaderEncoding = Encoding.UTF8;
Response.AddHeader("content-type", "application/x-msdownload");
Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", fileName));
Response.ContentType = "application/vnd.ms-excel";
Response.BinaryWrite(System.IO.File.ReadAllBytes(filePath));
Response.End(); }
catch (Exception e)
{
log.Error("导出数据失败:" + e.Message);
}
return null;
}

注意:项目部署到服务器上可能会报错,原因可能是服务器没安装excel或者服务器上的excel组件没有配置好,需要勾选“交互式用户”及其他,在网上可查,我也忘记了在哪了。

无它,本人学的计算机专业,但好久没做这一行业,贴出来的有些浅薄,只为帮助有需要的人和巩固一下。

导出数据到EXCEL并生成多个Sheet的更多相关文章

  1. MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult

    导出EXCEL方法总结 MVC导出数据到EXCEL的方法有很多种,常见的是: 1.采用EXCEL COM组件来动态生成XLS文件并保存到服务器上,然后转到该文件存放路径即可: 优点:可设置丰富的EXC ...

  2. ASP.NET导出数据到Excel 实例介绍

    ASP.NET导出数据到Excel  该方法只是把asp.net页面保存成html页面只是把后缀改为xlc不过excel可以读取,接下连我看看还有别的方式能导出数据,并利用模版生成. 下面是代码 新建 ...

  3. 一个方便且通用的导出数据到 Excel 的类库

    一个方便且通用的导出数据到 Excel 的类库 起源: 之前在做一个项目时,客户提出了许多的导出数据的需求: 导出用户信息 导出业务实体信息 各种查询都要能导出 导出的数据要和界面上看到的一致 可以分 ...

  4. python 导出数据到excel 中,一个好用的导出数据到excel模块,XlsxWriter

    最近公司有项目需要导出数据到excel,首先想到了,tablib,xlwt,xlrd,xlwings,win32com[还可以操作word],openpyxl,等模块但是 实际操作中tablib 写入 ...

  5. 从数据库导出数据到excel之POI操作

    项目说明: 1:数据库中有两张表,主键关联 2:根据条件查询数据 3:处理为需要的数据封装类型,然后传到导出excel的方法中 <--框架部署就不详谈了,用的spring框架--> 补充: ...

  6. ASP导出数据到excel遇到的一些问题

    一直用动易平台的ASP做新闻发布网站,直到现在才接触导出数据到Excel的问题,目的在于公司要统计各部门的投稿量,要做这么个东西,实现起来是挺简单的,但是第一次做,还是费了一些功夫的,特此记录一下 主 ...

  7. 1.ASP.NET MVC使用EPPlus,导出数据到Excel中

    好久没写博客了,今天特地来更新一下,今天我们要学习的是如何导出数据到Excel文件中,这里我使用的是免费开源的Epplus组件. 源代码下载:https://github.com/caofangshe ...

  8. 导出数据到Excel --使用ExcelReport有感

    先看图,这是几个月前用NPOI写的导出数据到Excel,用了上百行代码,而且难控制,导出来也比较难看 excel打开的效果 下面是我用ExcelReport类库导出到Excel的操作 1.首先引用Ex ...

  9. 使用Open xml 操作Excel系列之二--从data table导出数据到Excel

    由于Excel中提供了透视表PivotTable,许多项目都使用它来作为数据分析报表. 在有些情况下,我们需要在Excel中设计好模板,包括数据源表,透视表等, 当数据导入到数据源表时,自动更新透视表 ...

随机推荐

  1. PowerBuilder -- 条码打印

    # 使用ocx控件 使用微软的MSBCODE9.OCX,但是注册老不成功,需要安装office之后才能注册成功,不知道有没有好的处理方法?? # 使用字体 字体下载:http://download.c ...

  2. 为什么引入TSS

    [0]README text description from orange's implemention of a os and for complete code ,please visit ht ...

  3. 微信小程序设置控件权重

    项目中最常用的两种布局方式,水平布局和垂直布局,在微信小程序中实现起来也比较简单.       1.横向水平布局:         实现水平布局,需要四个view容器组件,其中一个是父容器.如下: & ...

  4. GS发包到MS

    GS发包到MS(GS,MS包交互过程) 例:人物上线 首先看看其实如何确定是哪张地图的 数据库首先只保存一个mapid 在share初始化的时候已经初始化了所有map,并保存了map的指针信息,其ke ...

  5. android菜鸟学习笔记17----Android数据存储(一)文件读写

    假如有如下需求,要求能够记录用户输入的用户名和密码,下次登录时,能直接获取之前保存的用户名密码,并在相应的EditText中显示. 要保存用户输入的数据,最先想到的应该就是文件读写了. 通过对andr ...

  6. 九度OJ 1036:Old Bill (老比尔) (基础题)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2691 解决:1432 题目描述: Among grandfather's papers a bill was found.     72 ...

  7. github Merge method

    About merge methods on GitHub - User Documentation https://help.github.com/articles/about-merge-meth ...

  8. php中$t=date()函数参数意义及时间更改

    php中date()函数用的最多的是:date('Y-m-d H:i:s', time());  这里面的参数意义分别是:Y - 年,四位数字; 如: "2016":m - 月份, ...

  9. client网络优化方法

    减小图片大小(使用WebP格式的图片)  大部分的Facebook应用数据都是图片,因此降低图片的大小就能够较少数据的下载量.从而加快下载速度,这一点在高延迟的网络环境下很重要.Facebook返回给 ...

  10. Android 进程增加存活率

    引用 : http://geek.csdn.net/news/detail/68515