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;
|
请发表评论