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];
//設(shè)置標(biāo)題
xlWorkSheet.Cells[1, 1] = "發(fā)送內(nèi)容";
xlWorkSheet.Cells[1, 2] = "發(fā)送時間";
xlWorkSheet.Cells[1, 3] = "發(fā)送圖片";
//設(shè)置寬度
((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[1, 2]).ColumnWidth = 15;
//設(shè)置字體
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 導(dǎo)出到客戶端
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;
轉(zhuǎn)載于:https://www.cnblogs.com/codeloves/p/3526986.html
總結(jié)
以上是生活随笔為你收集整理的asp.net 导出excel带图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css制作漂亮彩带导航条菜单
- 下一篇: node-webkit中使用sqlite