导出excel表功能
前台: <asp:Button ID="btndao" runat="server" Text="导出excel文件" onclick="btndao_Click"></asp:Button> 。cs:
protected void btndao_Click(object sender, EventArgs e)
{
this.ExportExcel();
}
/// <summary>
/// 导出数据到Ecxc
/// </summary>
private void ExportExcel()
{
using (aosmithnewEntities db = new aosmithnewEntities())
{
List<ReservationForm> formlist = db.ReservationForm.OrderBy(o => o.States).ThenByDescending(o => o.AddTime).ToList();
string SavaFilesPath = globalVariables.Download + Guid.NewGuid() + ".xls";
if (formlist == null || formlist.Count == 0)
{
throw new Exception("没有数据可导出。");
}
//建立一个Excel进程 Application
Application excelApplication = new Application(); //默认值为 True。如果不想在宏运行时被无穷无尽的提示和警告消息所困扰,请将本属性设置为 False;这样每次出现需用户应答的消息时,Microsoft Excel
// 将选择默认应答。
//如果将该属性设置为 False,则在代码运行结束后,Micorosoft Excel 将该属性设置为 True,除非正运行交叉处理代码。
//如果使用工作簿的 SaveAs 方法覆盖现有文件,“覆盖”警告默认为“No”,当 DisplayAlerts 属性值设置为 True 时,Excel 选择“Yes”。
excelApplication.DisplayAlerts = false; // 建立或打开一个 Workbook对象生成新Workbook
Workbook workbook = excelApplication.Workbooks.Add(Missing.Value);
int i = 2;
Worksheet lastWorksheet = (Worksheet)workbook.Worksheets.get_Item(workbook.Worksheets.Count);
Worksheet newSheet = (Worksheet)workbook.Worksheets.Add(Type.Missing, lastWorksheet, Type.Missing, Type.Missing);
newSheet.Cells[1, 1] = "产品类型";
newSheet.Cells[1, 2] = "型号";
newSheet.Cells[1, 3] = "安装/维保";
newSheet.Cells[1, 4] = "问题描述";
newSheet.Cells[1, 5] = "手机";
newSheet.Cells[1, 6] = "其他联系方式";
newSheet.Cells[1, 7] = "联系人姓名";
newSheet.Cells[1, 8] = "省份";
newSheet.Cells[1, 9] = "城市";
newSheet.Cells[1, 10] = "城(区)县";
newSheet.Cells[1, 11] = "详细地址";
newSheet.Cells[1, 12] = "上门时间";
newSheet.Cells[1, 13] = "其他要求";
newSheet.Cells[1, 14] = "表单状态";
((Range)newSheet.Rows.get_Item(1)).Font.Bold = true;
foreach (var dt in formlist)
{
//DateTime dtime = DateTime.Now;
newSheet.Cells[i, 1] = dt.ProductCategoryName;
newSheet.Cells[i, 2] = dt.Model;
newSheet.Cells[i, 3] = dt.FormName;
newSheet.Cells[i, 4] = dt.Description;
newSheet.Cells[i, 5] = dt.Mobile;
newSheet.Cells[i, 6] = dt.TelPhone;
newSheet.Cells[i, 7] = dt.ContactsName;
newSheet.Cells[i, 8] = dt.ProvinceName;
newSheet.Cells[i, 9] = dt.CityName;
newSheet.Cells[i, 10] = dt.DistrictName;
newSheet.Cells[i, 11] = dt.Address;
newSheet.Cells[i, 12] = dt.ServicesTime;
newSheet.Cells[i, 13] = dt.Other;
if (int.Parse(dt.States.ToString()) != 0)
{
newSheet.Cells[i, 14] = "已处理"; }
else
{
newSheet.Cells[i, 14] = "未处理";
}
i++;
}
newSheet.Cells.Columns.AutoFit();
//删除原来的空Sheet
((Worksheet)workbook.Worksheets.get_Item(1)).Delete();
((Worksheet)workbook.Worksheets.get_Item(1)).Delete();
((Worksheet)workbook.Worksheets.get_Item(1)).Delete();
//设置默认选中是第一个Sheet 类似于Select();
((Worksheet)workbook.Worksheets.get_Item(1)).Activate();
try
{
workbook.Close(true, SavaFilesPath, Missing.Value);
}
catch (Exception e)
{
throw e;
}
UploadExcel(SavaFilesPath, true);
excelApplication.Quit();
}
}
/// <summary>
/// 提供下载
/// </summary>
/// <param name="path"></param>
/// <param name="page"></param>
/// <param name="isDelete"></param>
private static void UploadExcel(string path, bool isDelete)
{
FileInfo file = new FileInfo(path);
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Charset = "GB2312";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(file.Name));
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString());
// 指定返回的是一个不能被客户端读取的流,必须被下载
HttpContext.Current.Response.ContentType = "application/ms-excel";
// 把文件流发送到客户端
HttpContext.Current.Response.WriteFile(file.FullName);
HttpContext.Current.Response.Flush();
if (isDelete)
{
File.Delete(path);
}
// 停止页面的执行
HttpContext.Current.Response.End(); }
导出excel表功能的更多相关文章
- 传参导出Excel表乱码问题解决方法
业务场景 先描述一下业务场景,要实现的功能是通过搜索框填写参数,然后点击按钮搜索数据,将搜索框的查询参数获取,附加在链接后面,调导Excel表接口,然后实现导出Excel功能.其实做导Excel表功能 ...
- thinkphp导入导出excel表单数据
在PHP项目经常要导入导出Excel表单. 先去下载PHPExcel类库文件,放到相应位置. 我在thinkphp框架中的位置为ThinkPHP/Library/Org/Util/ 导入 在页面上传e ...
- 【ITOO 1】将List数据导出Excel表
需求描述:在课表导入的时候,首先给用户提供模板(excel),然后将用户填写好的数据读取到list集合中.再进行判空处赋值处理,以及去重处理.这篇博客,主要介绍读取excel表和导出excel表的方法 ...
- ASP.NET导出excel表方法汇总
asp.net里导出excel表方法汇总 1.由dataset生成 public void CreateExcel(DataSet ds,string typeid,string FileName) ...
- DateGridew导出Excel表+常见错误提示
在敲机房收费系统的时候,显示数据的时候需要将DateGridew 中的数据导出进Excel表.DateGridew导出Excel表是比较常见的,当然导出Excel表有很多种方法,下面是个人认为比较容易 ...
- 前端导出excel表
前端导出excel表 方式一: 前端js实现 : https://www.cnblogs.com/zhangym118/p/6235801.html 方式二: java后端实现: https://bl ...
- C# asp.net中导出Excel表时总出现"只能在执行 Render() 的过程中调用 RegisterForEventValidation
C# asp.net中导出Excel表时总出现"只能在执行 Render() 的过程中调用 RegisterForEventValidation 后台添加以下方法:/// <summa ...
- vue+element UI如何导出excel表
导出excel表应按如下规则 首先要先安装如下依赖 npm install --save xlsx npm install --save file-saver 接下在在你的代码中去引用这两个 impo ...
- 微擎 人人商城 导出excel表分析
在 数据处理上 ,有很多时候需要导出excel表 来当报表, 等 , php 人人商城导出报表过程简单分析 在导出时候发现 ca('statistics.order.export'); 出于好奇 ...
随机推荐
- 很好用的在线markdown编辑器
# 欢迎使用 Cmd Markdown 编辑阅读器 基本符号 *,-,+ 3个符号效果都一样,这3个符号被称为 Markdown符号 空白行表示另起一个段落 `是表示inline代码,tab是用来标记 ...
- df和du显示的磁盘空间使用情况不一致的原因及处理
在Linux下查看磁盘空间使用情况,最常使用的就是du和df了.然而两者还是有很大区别的,有时候其输出结果甚至非常悬殊. 1. 如何记忆这两个命令 du-Disk Usage df-Disk Free ...
- android 插件化 模块化开发
http://blog.csdn.net/o1587790525/article/details/11891997 Android 插件化架构设计 http://www.iqiyi.com/w_19 ...
- 如何将MVC Areas中的某一个页设为起始页
area的默认页: routes.MapRoute( name: "MyArea", url: "{controller}/{action}/{id}", de ...
- APKTool 提取APK文件的资源
APK文件本身是一个压缩包,直接用解压工具即可打开,但里面的文件都已被编码为二进制文件格式,不能直接看,比如程序描述文件AndroidManifest.xml. 使用apktool工具可以将这些文件解 ...
- ibatis cannot find <sql> pattern
"Could not find SQL statement to include with refid xxx"A: 认真把每个用到xxx的地方都看一遍
- 一道 JavaScript 面试题
有一道 JavaScript 面试题. f = function () { return true; }; g = function () { return false; }; (function() ...
- Windows 2008下部署Exchange Server 2007
对于很多政府及企业来说,微软的邮件服务器Exchange Server都是一个不错的通信和协作平台选择,尤其新版邮件服务器Exchange Server 2007 和OCS的组合,在微软UC平台上创下 ...
- 剖析Disruptor:为什么会这么快?(二)神奇的缓存行填充
原文链接:http://mechanitis.blogspot.com/2011/07/dissecting-disruptor-why-its-so-fast_22.html 需FQ 计算机入门 ...
- Kafka Quick Start
1.Download > tar -xzf kafka_2.11-0.10.0.0.tgz> cd kafka_2.11-0.10.0.0 2.启动zookeeper服务 Kafka使用的 ...