导出数据到EXCEL并生成多个Sheet
一、准备工作
引用: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的更多相关文章
- MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult
导出EXCEL方法总结 MVC导出数据到EXCEL的方法有很多种,常见的是: 1.采用EXCEL COM组件来动态生成XLS文件并保存到服务器上,然后转到该文件存放路径即可: 优点:可设置丰富的EXC ...
- ASP.NET导出数据到Excel 实例介绍
ASP.NET导出数据到Excel 该方法只是把asp.net页面保存成html页面只是把后缀改为xlc不过excel可以读取,接下连我看看还有别的方式能导出数据,并利用模版生成. 下面是代码 新建 ...
- 一个方便且通用的导出数据到 Excel 的类库
一个方便且通用的导出数据到 Excel 的类库 起源: 之前在做一个项目时,客户提出了许多的导出数据的需求: 导出用户信息 导出业务实体信息 各种查询都要能导出 导出的数据要和界面上看到的一致 可以分 ...
- python 导出数据到excel 中,一个好用的导出数据到excel模块,XlsxWriter
最近公司有项目需要导出数据到excel,首先想到了,tablib,xlwt,xlrd,xlwings,win32com[还可以操作word],openpyxl,等模块但是 实际操作中tablib 写入 ...
- 从数据库导出数据到excel之POI操作
项目说明: 1:数据库中有两张表,主键关联 2:根据条件查询数据 3:处理为需要的数据封装类型,然后传到导出excel的方法中 <--框架部署就不详谈了,用的spring框架--> 补充: ...
- ASP导出数据到excel遇到的一些问题
一直用动易平台的ASP做新闻发布网站,直到现在才接触导出数据到Excel的问题,目的在于公司要统计各部门的投稿量,要做这么个东西,实现起来是挺简单的,但是第一次做,还是费了一些功夫的,特此记录一下 主 ...
- 1.ASP.NET MVC使用EPPlus,导出数据到Excel中
好久没写博客了,今天特地来更新一下,今天我们要学习的是如何导出数据到Excel文件中,这里我使用的是免费开源的Epplus组件. 源代码下载:https://github.com/caofangshe ...
- 导出数据到Excel --使用ExcelReport有感
先看图,这是几个月前用NPOI写的导出数据到Excel,用了上百行代码,而且难控制,导出来也比较难看 excel打开的效果 下面是我用ExcelReport类库导出到Excel的操作 1.首先引用Ex ...
- 使用Open xml 操作Excel系列之二--从data table导出数据到Excel
由于Excel中提供了透视表PivotTable,许多项目都使用它来作为数据分析报表. 在有些情况下,我们需要在Excel中设计好模板,包括数据源表,透视表等, 当数据导入到数据源表时,自动更新透视表 ...
随机推荐
- os如何处理键盘的所有按键,显示or不显示,显示是如何显示
[0]README 0.1) source code and text decription are from orange's implemention of a os , and for comp ...
- CentOS系统环境下安装MongoDB
(1)进入MongoDB下载中心:http://www.mongodb.org/downloads We recommend using these binary distributions (官方推 ...
- 动态内存分配(Dynamic memory allocation)
下面的代码片段的输出是什么?为什么? 解析:这是一道动态内存分配(Dynamic memory allocation)题. 尽管不像非嵌入式计算那么常见,嵌入式系统还是有从堆(heap)中动态分 ...
- JAVA解析XML之SAX方式
JAVA解析XML之SAX方式 SAX解析xml步骤 通过SAXParseFactory的静态newInstance()方法获取SAXParserFactory实例factory 通过SAXParse ...
- Android笔记之ViewModel的使用示例
依赖 implementation 'android.arch.lifecycle:extensions:1.1.1' implementation 'com.squareup.retrofit2:r ...
- Coursera公开课Functional Programming Principles in Scala习题解答:Week 2
引言 OK.时间非常快又过去了一周.第一周有五一假期所以感觉时间绰绰有余,这周中间没有假期仅仅能靠晚上加周末的时间来消化,事实上还是有点紧张呢! 后来发现每堂课的视频还有相应的课件(Slide).字幕 ...
- 使用maven3 创建自定义的archetype
创建自己的archetype一般有两种方式,比较简单的就是create from project 1.首先使用eclipse创建一个新的maven project,然后把配置好的一些公用的东西放到相应 ...
- No provisioned iOS devices are available with a compatible iOS version. Connect an iOS device with a
No provisioned iOS devices are available with a compatible iOS version. Connect an iOS device with a ...
- yhdsir@function:php
curl 获取页面信息 function curl_get_content($url){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $u ...
- POJ1226 Substrings ——后缀数组 or 暴力+strstr()函数 最长公共子串
题目链接:https://vjudge.net/problem/POJ-1226 Substrings Time Limit: 1000MS Memory Limit: 10000K Total ...