asp.net 导出excel带图片

摘要:
EventArgse){DataTabledt=ds.Tables[0];=null){#region Operation excelMicrosoft.Office.Interop.Excel.WorkbookxlWorkBook;xlWorkBook.Application.Visible=false;

protected void btgua_Click(object sender, EventArgs e)
{
DataTable dt = ds.Tables[0];
if (dt != null)
{
#region 操作excel
Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
xlWorkBook = new Microsoft.Office.Interop.Excel.Application().Workbooks.Add(Type.Missing);
xlWorkBook.Application.Visible = false;
xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Sheets[1];

//设置标题

xlWorkSheet.Cells[1, 1] = "发送内容";
xlWorkSheet.Cells[1, 2] = "发送时间";
xlWorkSheet.Cells[1, 3] = "发送图片";
//设置宽度
((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[1, 2]).ColumnWidth = 15;
//设置字体
xlWorkSheet.Cells.Font.Size = 12;
#region 为excel赋值
for (int i = 0; i < dt.Rows.Count; i++)
{
//为单元格赋值。
xlWorkSheet.Cells[i + 2, 1] = dt.Rows[i]["SendInfo"].ToString();
xlWorkSheet.Cells[i + 2, 2] = dt.Rows[i]["SendTime"].ToString();
#region

//可以直接取图片的地址
if (!string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Temp1"].ToString()))
{
string filename = Server.MapPath("upload/nianhuo/") + dt.Rows[i]["Temp1"].ToString();
#endregion
int rangeindex = i + 2;
string rangename = "C" + rangeindex;

Microsoft.Office.Interop.Excel.Range range = xlWorkSheet.get_Range(rangename, Type.Missing);

range.Select();
/////////////
float PicLeft, PicTop, PicWidth, PicHeight;    //距离左边距离,顶部距离,图片宽度、高度
PicTop = Convert.ToSingle(range.Top);
PicWidth = Convert.ToSingle(range.MergeArea.Width);
PicHeight = Convert.ToSingle(range.Height);
PicWidth = Convert.ToSingle(range.Width);
PicLeft = Convert.ToSingle(range.Left);
////////////////////

Microsoft.Office.Interop.Excel.Pictures pict = (Microsoft.Office.Interop.Excel.Pictures)xlWorkSheet.Pictures(Type.Missing);
if (filename.IndexOf(".") > 0)
{
if (System.IO.File.Exists(filename))
{
// pict.Insert(filename, Type.Missing);//显示原图 重叠在一起
xlWorkSheet.Shapes.AddPicture(filename, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, PicLeft, PicTop, PicWidth, PicHeight);//指定位置显示小图
}
}
}
// ActiveWorkbook


}
#endregion
#region 保存excel文件
Random myrand= new Random();
string filenamess = System.DateTime.Now.ToString("yyyyMMddhhMMss") + myrand.Next(0, 100);
string filePath = Server.MapPath("excel")+@"" +filenamess+".xls";
xlWorkBook.SaveAs(filePath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
xlWorkBook.Application.Quit();
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(filenamess, 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

using System.Reflection;
using System.Diagnostics;

using Microsoft.Office.Interop.Excel;

Using Office;

免责声明:文章转载自《asp.net 导出excel带图片》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇关于STM32F103系列从大容量向中容量移植的若干问题C#中Math方法总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

DataTable排序,检索,合并,筛选

http://apps.hi.baidu.com/share/detail/16252525 DataTable排序,检索,合并,筛选 DataTable排序,检索,合并详解 一、排序1 获取DataTable的默认视图2 对视图设置排序表达式3 用排序后的视图导出的新DataTable替换就DataTable(Asc升序可省略,多列排序用","隔...

C# 之 无法嵌入互操作类型(Word 或 Excel 操作)

Microsoft.Office.Interop.Excel.Application eApp = new Microsoft.Office.Interop.Excel.ApplicationClass(); 或 Microsoft.Office.Interop.Word.Application wApp = new Microsoft.Office.In...

C# DataTable 操作

添加引用 using System.Data; 创建表 //创建一个空表 DataTable dt = new DataTable(); //创建一个名为"Table_New"的空表 DataTable dt = new DataTable("Table_New"); 创建列 //1.创建空列 DataColumn dc = new DataColum...

C#中的double类型数据向SQL sqerver 存储与读取问题

1、存储 由于double类型在SQLsever中并没有对应数据,试过对应float、real类型,发现小数位都存在四舍五入的现象,目前我使用的是decimal类型,用此类型时个人觉得小数位数应该比自己的数据中小数位数设置的多一点,不然还是会出现四舍五入。 以下是我的代码,由于业务需求,我的数据库只存储一条数据,一直更新 using (SqlConne...

删除DataTable中除指定行以外的行,集合元素删除操作,倒序删除

https://www.cnblogs.com/zhangchenliang/archive/2010/08/02/1790600.html 简介:这是删除DataTable中除指定行以外的行 - .NET技术 / C#的详细页面,介绍了和c/c++,删除DataTable中除指定行以外的行 - .NET技术 / C#有关的知识,加入收藏请按键盘ctrl+...

导出数据到excel

第一种方式  :需引用 Microsoft.Office.Interop.Excel,安装office        public bool ExportToExcel()        { Microsoft.Office.Interop.Excel.Application xlApp; try { xlApp = new Microsoft.Offi...