导出excel表格
一.
1.获取数据源
2.DataTable dt = st.Tables[0];
HttpResponse resp; // HTTP响应信息
resp = Page.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); //设置输出流的HTTP字符集
resp.ContentType = "application/vnd.ms-excel"; //设置输出流的HTTP MIME类型
string name = "Message_" + DateTime.Now.ToString("yyyyMMddhhss") + ".xls";
resp.AppendHeader("Content-Disposition", "attachment;filename=" + name); //将HTTP头添加到输出流
// 定义表对象与行对象,同时用DataSet对其值进行初始化
//
dt.Columns.Remove("lyqq");
dt.Columns.Remove("lyhf");
dt.Columns["lyid"].ColumnName = "编号";
dt.Columns["lyname2"].ColumnName = "姓名";
dt.Columns["lymail"].ColumnName = "邮箱";
dt.Columns["lydh"].ColumnName = "电话";
dt.Columns["lydz"].ColumnName = "地址";
dt.Columns["lyname"].ColumnName = "回访时间";
dt.Columns["lyneirong"].ColumnName = "内容";
dt.Columns["lytime"].ColumnName = "时间";
System.IO.StringWriter oSW = new System.IO.StringWriter();
HtmlTextWriter oHW = new HtmlTextWriter(oSW);
DataGrid dg = new DataGrid();
dg.DataSource = dt;
dg.DataBind();
dg.RenderControl(oHW);
resp.Write(oSW.ToString());
resp.Flush();
resp.Close();
二.带图片导出
private void OutExcel2()
{
datalist(); //获取数据
DataTable dt = st.Tables[0];
if (dt != null)
{
#region 操作excel
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
xlWorkBook = new Excel.Application().Workbooks.Add(Type.Missing);
xlWorkBook.Application.Visible = false;
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Sheets[1]; //创建一个工作簿
//设置工作簿里显示的单元格的标题
xlWorkSheet.Cells[1, 1] = "名称";
xlWorkSheet.Cells[1, 2] = "简介";
xlWorkSheet.Cells[1, 3] = "间隔";
xlWorkSheet.Cells[1, 4] = "图片";
//设置宽度
((Excel.Range)xlWorkSheet.Cells[1, 2]).ColumnWidth = 15;
((Excel.Range)xlWorkSheet.Cells[1, 4]).ColumnWidth = 20;//图片的宽度
//列宽自动
// xlWorkSheet.get_Range(xlWorkSheet.Cells[1, 1], xlWorkSheet.Cells[1, columns]).EntireColumn.AutoFit();
// xlWorkSheet.Columns.EntireColumn.AutoFit();//自动适应长度
//设置字体
xlWorkSheet.Cells.Font.Size = 12;
xlWorkSheet.Cells.Rows.RowHeight = 100;
#region 为excel赋值
for (int i = 0; i < dt.Rows.Count; i++)
{
//为单元格赋值。
xlWorkSheet.Cells[i + 2, 1] = dt.Rows[i]["spname"].ToString();
xlWorkSheet.Cells[i + 2, 2] = dt.Rows[i]["spjj"].ToString();
xlWorkSheet.Cells[i + 2, 3] = dt.Rows[i]["spjg"].ToString();
#region
//直接取图片的地址
string filename = Server.MapPath(dt.Rows[i]["sptp"].ToString());
//用下面的方法把图片从数据库里取出来。
//byte[] filedata = (byte[])dtimg.Rows[j]["img"];
//System.IO.MemoryStream ms = new System.IO.MemoryStream(filedata);
//System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
//img.Save(filename);
#endregion
//int rangeindex = i+1;
//string rangename = "D" + rangeindex;
//Excel.Range range = xlWorkSheet.get_Range(rangename, Type.Missing);
//range.Select();
//Excel.Pictures pict = (Excel.Pictures)xlWorkSheet.Pictures(Type.Missing);
//pict.Insert(filename, Type.Missing);
//Left , Top , Width and Height.设置指定位置图片的显示
xlWorkSheet.Shapes.AddPicture(filename, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue,
220, 100 + i * 100, 100, 100);
}
#endregion
#region 保存excel文件
string filePath = Server.MapPath("ReadExcel") + "" + System.DateTime.Now.ToString().Replace(":", "") + ".xls";
xlWorkBook.SaveAs(filePath); //保存
xlWorkBook.Application.Quit(); //关闭 Excel.Workbook
xlWorkSheet = null;
xlWorkBook = null;
GC.Collect();//回收
System.GC.WaitForPendingFinalizers();
#endregion
#endregion
#region 导出到客户端
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.AppendHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode("导出", System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "Application/excel";
Response.WriteFile(filePath);
Response.End();
#endregion
KillProcessexcel("EXCEL");
}
}
#region 杀死进程
private void KillProcessexcel(string processName)
{ //获得进程对象,以用来操作
System.Diagnostics.Process myproc = new System.Diagnostics.Process();
//得到所有打开的进程
try
{
//获得需要杀死的进程名
foreach (Process thisproc in Process.GetProcessesByName(processName))
{ //立即杀死进程
thisproc.Kill();
}
}
catch (Exception Exc)
{
throw new Exception("", Exc);
}
}
#endregion
导出excel表格的更多相关文章
- PHP导入导出excel表格图片(转)
写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用smarty等作的简单替换xml的也用过,csv的就更不用谈了.呵呵.(COM方式不讲了,这种可读的太多了,我也写过利用wp ...
- java中使用jxl导出Excel表格详细通用步骤
该方法一般接收两个参数,response和要导出的表格内容的list. 一般我们将数据库的数据查询出来在页面进行展示,根据用户需求,可能需要对页面数据进行导出. 此时只要将展示之前查询所得的数据放入s ...
- .NET环境下导出Excel表格的两种方式和导入两种类型的Excel表格
一.导出Excel表格的两种方式,其中两种方式指的是导出XML数据类型的Excel(即保存的时候可以只需要修改扩展名为.xls)和真正的Excel这两种. using System; using Sy ...
- java导出excel表格
java导出excel表格: 1.导入jar包 <dependency> <groupId>org.apache.poi</groupId> <artifac ...
- 使用NPOI将数据库里信息导出Excel表格并提示用户下载
使用NPOI进行导出Excel表格大家基本都会,我在网上却很少找到导出Excel表格并提示下载的 简单的代码如下 //mvc项目可以传多个id以逗号相隔的字符串 public ActionResult ...
- VB.NET版机房收费系统---导出Excel表格
datagridview,翻译成中文的意思是数据表格显示,使用DataGridView控件,能够显示和编辑来自不同类型的数据源的表格,将数据绑定到DataGridView控件很easy和直观,大多数情 ...
- C#导出Excel表格方法
using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using NPOI.SS.Formula.Functions; using System.Re ...
- Java代码导入导出 Excel 表格最简单的方法
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStrea ...
- js导出Excel表格
js导出Excel表格 直接上代码: 红色部分:如果表格数据中有“1/1”这样的值,会在导出的Excel中转化为日期“1月1日”,所以才加上了红色那两句.如果返回值中没有这样的格式,红色部分可以不写. ...
- Spring Boot 导出Excel表格
Spring Boot 导出Excel表格 添加支持 <!--添加导入/出表格依赖--> <dependency> <groupId>org.apache.poi& ...
随机推荐
- Centos 6.5使用Bumblebee关闭N卡,冷却你的电脑
夏天来了,笔记本装的Centos一直非常热.随着天气的变化,这个问题真的要攻克了.差了下原因可能是双显卡笔记本,N卡驱动不完好,导致风扇狂叫. 昨天安装了nvidia 的显卡驱动本以为时间安静了.但是 ...
- MySQL 行子查询(转)
MySQL 行子查询 行子查询是指子查询返回的结果集是一行 N 列,该子查询的结果通常是对表的某行数据进行查询而返回的结果集. 一个行子查询的例子如下: SELECT * FROM table1 WH ...
- java_线程-锁
package com.demo.test3; import java.util.concurrent.CountDownLatch; /** * @author QQ: 1236897 * */ / ...
- visual studio 2013 c++ 打开code map 功能
属性->c++ -> Browse Infomation -> Enable Browse Infomation设为true http://msdn.microsoft.com/li ...
- C#中ROUND函数的问题 解决
ROUND()是C#中math的一个成员函数.System.Math.Round(),这个函数有四种用法,最长用的是对小数点位数的舍入.但这和现实生活中的“四舍五入”有一定区别,也有别JAVA中Mat ...
- c编写程序完成m名旅客和n辆汽车的同步程序代写
jurassic公园有一个恐龙博物馆和一个公园,有m名旅客和n辆汽车,每辆汽车仅能允许承载一名旅客.旅客在博物馆参观一阵,然后排队乘坐旅行车.当一辆车可用时,他载入一名旅客,再绕花园行驶任意长的时间. ...
- dede只调用当天发布的文档
dede只调用当天发布的文档 dede文章的调用 我需要织梦的模板分别调用,一天内发布的文章,三天内发布的文章,和七天内发布的文章,请问是代码是怎么写的,如何调用,如图所示. 点一天内,显示最近24的 ...
- [转]Speeding Up Websites With YSlow
本文转自:http://net.tutsplus.com/tutorials/other/speeding-up-websites-with-yslow/ We all know there are ...
- PE制作实录 —— 补充说明
上一篇博文中我提到了定制 PE 合盘的方法,可能还有一些朋友不是很懂,这里补充几点. 要点1: 菜单的排布 U盘启动时的界面,这里叫做主界面,而主界面下有时还会用到子界面,下面是我制作的PE的菜单目录 ...
- HTTP - 条件请求
当 HTTP 请求包含 If-XXX 这种样式的首部时,服务器会对附带的条件进行判断,只有判断指定条件为真,才会执行请求.这样的请求首部有五个,分别是 If-Modified-Since.If-Unm ...