• 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;

  • 相关阅读:
    判断一张view 是否被加载过用 nil == view.superview
    oracle9i新增sql命令merge
    Windows平台个人常用软件推荐
    ASPxSpinEdit高度无法控件的解决办法
    Oracle编码约定
    宾克斯的酒 
    “dcom项目无属性”的解决方法
    安装VS2005后找不到工具箱的解决办法
    奇怪问题一个
    Oracle临时表空间不够,导致查询出错。
  • 原文地址:https://www.cnblogs.com/codeloves/p/3526986.html
Copyright © 2020-2023  润新知