导出Excel
#region excel
private void ReleaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
}
catch { }
finally { obj = null; }
}
private void KillExcelProcess()
{
Process[] myProcesses;
myProcesses = Process.GetProcessesByName("Excel");
foreach (Process myProcess in myProcesses)
{
myProcess.Kill();
}
}
private void DownloadFile(string filePath)
{
if (!File.Exists(filePath))
{
Response.Write("<script>alert('文件不存在'></script>");
return;
}
string fileName = System.IO.Path.GetFileName(filePath);
if (fileName == string.Empty)
{
Response.Write("<script>alert('文件不存在!'></script>");
return;
}
FileInfo DownloadFile = new FileInfo(filePath);
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.UTF8));
Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
Response.WriteFile(DownloadFile.FullName);
Response.Flush();
Response.End();
}
#endregion
protected void btnExcel_Click(object sender, EventArgs e)
{
string VirFileName = string.Empty;
VirFileName = "downloadfiles/BlackListDowload" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
//打开excel
Excel.ApplicationClass excel = new Excel.ApplicationClass();
object missing = System.Reflection.Missing.Value;
excel.Workbooks.Add(missing);
Excel.Workbook book = excel.Workbooks[1];
Excel.Worksheet sheet;
sheet = (Excel.Worksheet)book.Sheets[1];
Excel.Range rg;
sheet.Name = "黑名单";
#region //打表头
rg = sheet.get_Range("A1:A1", Missing.Value);
rg.HorizontalAlignment = Excel.Constants.xlCenter;
rg.Value2 = "股票名称/代码";
rg.ColumnWidth = 20;
rg = sheet.get_Range("B1:B1", Missing.Value);
rg.HorizontalAlignment = Excel.Constants.xlCenter;
rg.Value2 = "所属行业";
rg.ColumnWidth = 30;
rg = sheet.get_Range("C1:C1", Missing.Value);
rg.HorizontalAlignment = Excel.Constants.xlCenter;
rg.Value2 = "日期";
rg = sheet.get_Range("D1:D1", Missing.Value);
rg.HorizontalAlignment = Excel.Constants.xlCenter;
rg.Value2 = "操作人";
#endregion
StockBlacklist modellist = new StockBlacklist();
modellist.secuCode = txtQueryCode.Value;
modellist.block = txtBlock.Value;
modellist.addDate = string.IsNullOrEmpty(sDate.Value) ? DateTime.Parse("0001-1-1 0:00:00") : DateTime.Parse(sDate.Value);
modellist.addDateEnd = string.IsNullOrEmpty(eDate.Value) ? DateTime.Parse("0001-1-1 0:00:00") : DateTime.Parse(eDate.Value);
string page = Request["page"];
string flag = Request["flag"];
if (string.IsNullOrEmpty(flag))
{
flag = "1";
}
StockBlacklistBLL bll = new StockBlacklistBLL();
List<StockBlacklist> list = bll.GetStockBlacklist(int.Parse(flag), modellist);
DataTable dt = list.ToDataTable();
int iNow = 1;
for (int i = 0; i < dt.Rows.Count; i++)
{
iNow = iNow + 1;
#region 写数据
rg = sheet.get_Range("A" + (iNow).ToString(), Missing.Value);
rg.Value2 = dt.Rows[i]["secuName"].ToString() + "/" + dt.Rows[i]["secuCode"].ToString();
rg.HorizontalAlignment = Excel.Constants.xlCenter;
rg = sheet.get_Range("B" + (iNow).ToString(), Missing.Value);
rg.Value2 = dt.Rows[i]["block"].ToString();
rg.HorizontalAlignment = Excel.Constants.xlCenter;
rg = sheet.get_Range("C" + (iNow).ToString(), Missing.Value);
rg.Value2 = dt.Rows[i]["addDate"].ToString();
rg.HorizontalAlignment = Excel.Constants.xlRight;
rg = sheet.get_Range("D" + (iNow).ToString(), Missing.Value);
rg.Value2 = dt.Rows[i]["editUser"].ToString();
rg.HorizontalAlignment = Excel.Constants.xlCenter;
rg.ColumnWidth = 20;
#endregion
}
//下面是四周画线的代码
Excel.Range rangetitle = sheet.get_Range(sheet.Cells[1, 1], excel.Cells[iNow, 8]);
rangetitle.Borders.get_Item(Excel.XlBordersIndex.xlInsideHorizontal).Weight = Excel.XlBorderWeight.xlThin;
rangetitle.Borders.get_Item(Excel.XlBordersIndex.xlInsideVertical).Weight = Excel.XlBorderWeight.xlThin;
rangetitle.Borders.get_Item(Excel.XlBordersIndex.xlEdgeTop).Weight = Excel.XlBorderWeight.xlThin;
rangetitle.Borders.get_Item(Excel.XlBordersIndex.xlEdgeBottom).Weight = Excel.XlBorderWeight.xlThin;
rangetitle.Borders.get_Item(Excel.XlBordersIndex.xlEdgeLeft).Weight = Excel.XlBorderWeight.xlThin;
rangetitle.Borders.get_Item(Excel.XlBordersIndex.xlEdgeRight).Weight = Excel.XlBorderWeight.xlThin;
#region EXCEL关闭
excel.DisplayAlerts = false;
book.SaveCopyAs(Server.MapPath(VirFileName));
excel.Workbooks.Close();
excel.Quit();
sheet = null;
this.ReleaseObject(book);
this.ReleaseObject(excel);
GC.Collect();
DownloadFile(Server.MapPath(VirFileName));
KillExcelProcess();
#endregion
this.Dispose();
}