导出数据到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中设计好模板,包括数据源表,透视表等, 当数据导入到数据源表时,自动更新透视表 ...
随机推荐
- 17 redis -key设计原则
书签系统 create table book ( bookid int, title char(20) )engine myisam charset utf8; insert into book va ...
- 目标检测之基础hessian matrix ---海森矩阵
就是海赛(海色)矩阵,在网上搜就有. 在数学中,海色矩阵是一个自变量为向量的实值函数的二阶偏导数组成的方块矩阵, Hessian矩阵是多维变量函数的二阶偏导数矩阵,H(i,j)=d^2(f)/(d(x ...
- node / npm/ yarn 的安装以及环境变量
# node.js 10.15.3 https://npm.taobao.org/mirrors/node/v10.15.3/node-v10.15.3-x64.msi 1.安装后自动添加了环境变量: ...
- OIer同样是音乐家
烦闷的时候,shenben为大家准备了2首歌(不用耳机也能听哦) 只需把代码复制到dev-c++的编辑器上,轻按F11,然后聆听OIer的音乐…… 千本樱 曲谱 #include <cstdio ...
- Html控件和Web控件(转)
作为一名ASP.NET的初学者,了解并且区别一些混淆概念是很必须的,今天这篇博文 就是主要向大家介绍一下Html控件和Web控件.在ASP.net中,用户界面控件主要就是 Html控件和Web控件,在 ...
- 九度OJ 1059:abc (基础题)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3642 解决:2869 题目描述: 设a.b.c均是0到9之间的数字,abc.bcc是两个三位数,且有:abc+bcc=532.求满足条件的 ...
- cocos2d-js v3.1的坑
前几天因为要用到cc.pool,所以就换了v3.1版本,结果连生成apk的出错(cocos code ide), log显示为:error: relocation overflow in R_ARM_ ...
- file标签样式修改
1. 这是默认的file样式,无法修改,在网页中用它感觉非常不合群,大部分修改的办法就是把它隐藏,绝对定位一个文本框和一个按钮 这是修改后的样式,之后修改样式就是分别修改文本框和按钮样式了,就非常简单 ...
- Swift 学习笔记 (继承)
一个类可以从另一个类继承方法.属性和其他的特性.当一个类从另一个类继承的时候,继承的类就是所谓的子类,而这个类继承的类被称为父类. 在 Swift 中类可以调用和访问属于它们父类的方法.属性和下标脚本 ...
- 聚聚科技——php开发笔试题及答案
聚聚科技是一个刚创立的公司,很小很小,人很少,老板感觉是个典型的北京小伙儿,戾气很重,很有个性.笔试题倒是简单: 1. echo(), print(), print_r()的区别? echo是PHP语 ...