asp.net 导出excel带图片
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;
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。