asp net导出excel(带图片)

#region 导出
protected void Button2_Click(object sender, EventArgs e)
{

jiazaifenye(pagesize, curpage, v);
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] = "提交时间";
xlWorkSheet.Cells[1, 4] = "投票数";
xlWorkSheet.Cells[1, 5] = "作品链接";
//设置宽度
((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++)
{
string dizhi = "";
if (dt.Rows[i]["types"].ToString() == "视频") { dizhi = dt.Rows[i]["contens"].ToString(); }
//为单元格赋值。
xlWorkSheet.Cells[i + 2, 1] = dt.Rows[i]["titles"].ToString();
//xlWorkSheet.Cells[i + 1, 2] = dt.Rows[i]["a1"].ToString();
xlWorkSheet.Cells[i + 2, 3] = dt.Rows[i]["times"].ToString();
xlWorkSheet.Cells[i + 2, 4] = dt.Rows[i]["a2"].ToString();
xlWorkSheet.Cells[i + 2, 5] = dizhi;
#region

//可以直接取图片的地址
string filename = "E:\\天誉网站\\xunyuan\\Web\\upload\\"+dt.Rows[i]["a1"].ToString().Substring(7);
#endregion
int rangeindex = i + 2;
string rangename = "B" + 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文件
string filePath = Server.MapPath("ReadExcel") + "" + System.DateTime.Now.ToString().Replace(":", "") + "导出.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("导出", System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "Application/excel";
Response.WriteFile(filePath);
Response.End();
#endregion
KillProcessexcel("EXCEL");

}

}
#endregion
#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

相关文档
最新文档