导出数据到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中设计好模板,包括数据源表,透视表等, 当数据导入到数据源表时,自动更新透视表 ... 
随机推荐
- Oracle学习第三篇—多行函数
			0 order by asc/desc 默认升序 order by 列的名字|表达式|别名|序号 把空放在后边:order by desc nulls last 1分组函数--会自动滤空值 count ... 
- POJ 1840 Eqs(hash)
			题意 输入a1,a2,a3,a4,a5 求有多少种不同的x1,x2,x3,x4,x5序列使得等式成立 a,x取值在-50到50之间 直接暴力的话肯定会超时的 100的五次方 10e了都 ... 
- CAS实现单点登录理解
			CAS 是 Yale 大学发起的一个企业级的.开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(属于 Web SSO ),CAS 开始于 2001 年, 并在 2004 年 12 月 ... 
- TP框架---thinkphp基础知识
			php框架 发瑞 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困 ... 
- TP框架---thinkphp模型
			1.获取系统常量信息的方法:在控制器DengLuController里面下写入下面的方法,然后调用该方法. public function test() { //echo "这是测试的&qu ... 
- live555二次开发经验总结:RTSPClient客户端与RTSPServer服务器
			live555介绍 安防领域的流媒体开发者估计没有谁不知道live555的,可能并不是因为其架构有多牛,代码有多好看,而是因为这玩意存在的年限实在是太长了,从changelog来看,live555从2 ... 
- iOS应用上架报错解决
			ERROR ITMS-90087: "Unsupported Architectures. The executable for LiveStorage.app/Frameworks/Spe ... 
- 一阶 斜率 二阶 原函数的粗糙度 roughness
			1 2 损失函数+惩罚函数 2阶导数 
- Ubuntu12.04如何修改窗口背景色为眼睛保护色来保护眼睛,强力推荐!!
			最近突然发现盯着屏幕看的久了,眼睛会非常的痛苦,因此想改变一下系统的窗口背景颜色.其实看代码主要是在Eclipse里面察看,因此一开始我就想改变Eclipse的文本编辑框的背景颜色,效果如下图所示. ... 
- keras:Exception: Error when checking model target
			问题: 用keras的functional API搭建多输入多输出模型时,报错某个输出层对应的类标数组大小与模型中不一致. 解决办法:升级keras到最新版(doge脸)keras迭代太快了啊摔,总有 ... 
