从DataTable导出Excel,并下载,删除Excel进程。

页面上加入一个button即可.
源代码如下:

None.gifusing System;
None.gif
using System.Collections;
None.gif
using System.ComponentModel;
None.gif
using System.Data;
None.gif
using System.Drawing;
None.gif
using System.Web;
None.gif
using System.Web.SessionState;
None.gif
using System.Web.UI;
None.gif
using System.Web.UI.WebControls;
None.gif
using System.Web.UI.HtmlControls;
None.gif
using Microsoft.Office.Interop.Excel;
None.gif
None.gif
namespace Test
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// TestExcel 的摘要说明。
ExpandedSubBlockEnd.gif    
/// </summary>

InBlock.gif    public class TestExcel : System.Web.UI.Page
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
protected System.Web.UI.WebControls.Button Button1;
InBlock.gif    
InBlock.gif        
private void Page_Load(object sender, System.EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
InBlock.gif        
override protected void OnInit(EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
//
InBlock.gif            
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
InBlock.gif            
//
InBlock.gif
            InitializeComponent();
InBlock.gif            
base.OnInit(e);
ExpandedSubBlockEnd.gif        }

InBlock.gif        
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
InBlock.gif        
/// 此方法的内容。
ExpandedSubBlockEnd.gif        
/// </summary>

InBlock.gif        private void InitializeComponent()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{    
InBlock.gif            
this.Button1.Click += new System.EventHandler(this.Button1_Click);
InBlock.gif            
this.Load += new System.EventHandler(this.Page_Load);
InBlock.gif
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif        
#endregion

InBlock.gif
InBlock.gif        
private void Button1_Click(object sender, System.EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
try
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
string DownloadPath=Server.MapPath(".");    //副本的文件夹路径。
InBlock.gif                
//副本的文件名。
InBlock.gif
                string TempFileName = DateTime.Now.ToString("yyyyMMdd"+ DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + ".XLS"
InBlock.gif                
this.txtTempFileName.Text=TempFileName;
InBlock.gif                
object missing = System.Reflection.Missing.Value;
InBlock.gif                
object missing2 = System.Reflection.Missing.Value;
InBlock.gif                ApplicationClass myExcel
=new ApplicationClass();
InBlock.gif
InBlock.gif                Workbook myBook
=(Workbook)myExcel.Workbooks.Add(missing);
InBlock.gif                Worksheet curSheet 
= (Worksheet)myBook.Sheets[1];
InBlock.gif                
//设置Excel样式
InBlock.gif
                Range r1=(Range)myExcel.Cells[1,2];
InBlock.gif
InBlock.gif                Range r2
=(Range)myExcel.Cells[3,4];
InBlock.gif
InBlock.gif                r1.Font.Bold
=true;
InBlock.gif                r2.Font.Bold
=true;
InBlock.gif
InBlock.gif
InBlock.gif                
string DownloadFilePath=DownloadPath+"\\"+TempFileName;
InBlock.gif
InBlock.gif                 System.Data.DataTable dt
=this.GetTable();
InBlock.gif                
int rc=dt.Rows.Count;
InBlock.gif                
//绘制边框
InBlock.gif
                Range rBorders=(Range)curSheet.get_Range(myExcel.Cells[7,1],myExcel.Cells[7+rc+1,10]);
InBlock.gif                rBorders.Borders.LineStyle
=1;
InBlock.gif                curSheet.get_Range(myExcel.Cells[
7,1],myExcel.Cells[7+rc+1,1]).Borders[XlBordersIndex.xlEdgeLeft].Weight = XlBorderWeight.xlThick;//设置左边线加粗
InBlock.gif
                curSheet.get_Range(myExcel.Cells[7,1],myExcel.Cells[7,10]).Borders[XlBordersIndex.xlEdgeTop].Weight = XlBorderWeight.xlThick;//设置设置上边线加粗
InBlock.gif
                curSheet.get_Range(myExcel.Cells[7+rc+1,1],myExcel.Cells[7+rc+1,10]).Borders[XlBordersIndex.xlEdgeBottom].Weight = XlBorderWeight.xlThick;//设置下边线加粗
InBlock.gif
                curSheet.get_Range(myExcel.Cells[7,10],myExcel.Cells[7+rc+1,10]).Borders[XlBordersIndex.xlEdgeRight].Weight = XlBorderWeight.xlThick;//设置右边线加粗
InBlock.gif
InBlock.gif
InBlock.gif
InBlock.gif                
//Excel的表头信息
InBlock.gif
                myExcel.Cells[1,2]="表头信息";
InBlock.gif
InBlock.gif                myExcel.Cells[
2,2]="New Added:" + DateTime.Now.ToString();
InBlock.gif                myExcel.Cells[
3,4]="VENDOR  CODE  LIST  -  BY  PRODUCTS.";
InBlock.gif                myExcel.Cells[
4,4]="****************************************";
InBlock.gif
InBlock.gif                myExcel.Cells[
5,9]="DATE From:" + DateTime.Now.ToString();
InBlock.gif                myExcel.Cells[
6,9]="DATE To:" + DateTime.Now.ToString();
InBlock.gif
InBlock.gif                myExcel.Cells[
7,5]="PARTS SUPPLIER";
InBlock.gif
InBlock.gif                
//设置Excel表列头
InBlock.gif
                myExcel.Cells[8,1]="Item";
InBlock.gif                myExcel.Cells[
8,2]="OrgCode";
InBlock.gif                myExcel.Cells[
8,3]="VendorCode";
InBlock.gif                myExcel.Cells[
8,4]="VendorName";
InBlock.gif                myExcel.Cells[
8,5]="A";
InBlock.gif                myExcel.Cells[
8,6]="B";
InBlock.gif                myExcel.Cells[
8,7]="C";
InBlock.gif                myExcel.Cells[
8,8]="PayMentType";
InBlock.gif                myExcel.Cells[
8,9]="TermsCode";
InBlock.gif                myExcel.Cells[
8,10]="CreateTime";
InBlock.gif                
//设置表头字体风格
InBlock.gif
                curSheet.get_Range(myExcel.Cells[7,1],myExcel.Cells[8,10]).Font.Bold=true;
InBlock.gif                
int j=1;//j为总结的Item数目的变量
InBlock.gif
                int i=9;
InBlock.gif                
while (i-8<=dt.Rows.Count)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    myExcel.Cells[i,
1]=j.ToString();
InBlock.gif                    myExcel.Cells[i,
2]=dt.Rows[i-9]["Name"].ToString().Trim();
InBlock.gif                    myExcel.Cells[i,
3]=dt.Rows[i-9]["cost"].ToString().Trim();
InBlock.gif                    myExcel.Cells[i,
4]=dt.Rows[i-9]["bug"].ToString().Trim();
InBlock.gif                    myExcel.Cells[i,
5]="";
InBlock.gif                    myExcel.Cells[i,
6]="";
InBlock.gif                    myExcel.Cells[i,
7]="";
InBlock.gif                    
InBlock.gif                    
//设置颜色,否则日期显示成"######"格式。
InBlock.gif
                    Range rCol10=(Range)myExcel.Cells[i,10];
InBlock.gif                    rCol10
=null;
InBlock.gif                    
//从1开始循环
InBlock.gif
                    j++;
InBlock.gif                    i
++;
ExpandedSubBlockEnd.gif                }
 
InBlock.gif
InBlock.gif                myBook.Saved
=true;
InBlock.gif                myBook.SaveAs(DownloadFilePath,missing2,
"","",false,false,XlSaveAsAccessMode.xlNoChange,1,false,missing,missing,missing);
InBlock.gif
InBlock.gif                myBook.Close(
falsenull,null);
InBlock.gif                myExcel.Quit();
InBlock.gif                System.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);
InBlock.gif                System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);
InBlock.gif                myBook 
= null;
InBlock.gif                myExcel 
= null;
InBlock.gif                GC.Collect();
InBlock.gif                
//下载文件
InBlock.gif
                HttpResponse response = HttpContext.Current.Response; 
InBlock.gif                response.Clear();
InBlock.gif                response.WriteFile(DownloadFilePath);
InBlock.gif                
string httpHeader="attachment;filename=backup.Xls";
InBlock.gif                response.AppendHeader(
"Content-Disposition", httpHeader);
InBlock.gif                response.Flush();
InBlock.gif                
//删除临时文件
InBlock.gif
                System.IO.File.Delete(DownloadFilePath);
InBlock.gif                
InBlock.gif                killExcelProcess();
ExpandedSubBlockEnd.gif            }

InBlock.gif            
catch(Exception Ex)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
throw Ex;
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 删除Excel进程
ExpandedSubBlockEnd.gif        
/// </summary>

ExpandedSubBlockStart.gifContractedSubBlock.gif        private void  killExcelProcess()dot.gif{
InBlock.gif            
//结束 Excel 进程
ExpandedSubBlockStart.gifContractedSubBlock.gif
            foreach(System.Diagnostics.Process xlProcess in System.Diagnostics.Process.GetProcesses())dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif                
if( xlProcess.ProcessName.ToUpper().Equals("EXCEL")) dot.gif{
InBlock.gif                    
//结束 excel 进程 
InBlock.gif
                    xlProcess.Kill();
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

InBlock.gif                
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 构建临时DataTable
InBlock.gif        
/// </summary>
ExpandedSubBlockEnd.gif        
/// <returns></returns>

InBlock.gif        private System.Data.DataTable GetTable()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            System.Data.DataTable dt 
= new System.Data.DataTable();
InBlock.gif            dt.Columns.Add(
"Name");
InBlock.gif            dt.Columns.Add(
"cost");
InBlock.gif            dt.Columns.Add(
"bug");
InBlock.gif            DataRow rw 
= dt.NewRow();
InBlock.gif            rw[
"Name"]= "";
InBlock.gif            rw[
"Cost"]= "12";
InBlock.gif            rw[
"bug"]= "5";
InBlock.gif            dt.Rows.Add(rw);
InBlock.gif            rw 
= dt.NewRow();
InBlock.gif            rw[
"Name"]= "";
InBlock.gif            rw[
"Cost"]= "15";
InBlock.gif            rw[
"bug"]= "2";
InBlock.gif            dt.Rows.Add(rw);
InBlock.gif            rw 
= dt.NewRow();
InBlock.gif            rw[
"Name"]= "";
InBlock.gif            rw[
"Cost"]= "8";
InBlock.gif            rw[
"bug"]= "1";
InBlock.gif            dt.Rows.Add(rw);
InBlock.gif            
return dt;
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif


 

转载于:https://www.cnblogs.com/echo/archive/2005/05/24/161461.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Traceroute(路由追踪)的原理及实现

现实世界中的网络是由无数的计算机和路由器组成的一张的大网&#xff0c;应用的数据包在发送到服务器之前都要经过层层的路由转发。而Traceroute是一种常规的网络分析工具&#xff0c;用来定位到目标主机之间的所有路由器 原理 在介绍Traceroute的原理之前&#xff0c;需要了解…

我们应该搞清楚分支预测

分支预测的英文名字是「Branch Prediction」大家可以在Google上搜索这个关键字&#xff0c;可以看到关于分支预测的很多内容&#xff0c;不过要搞清楚分支预测如何工作的&#xff0c;才是问题的关键。分支预测对程序的影响我们来看看下面的两段代码代码1#include <algorithm…

Intent介绍及Intent在Activity中的使用方法

1.Intent的实现过程   在Android中&#xff0c;Intent不仅可用于应用程序之间的交互&#xff0c;也可用于应用程序内部的Activity/Service之间的交互。   Intent负责对应用中一次操作进行描述&#xff0c;描述内容包括动作以及动作所涉及的数据&#xff0c;Android中的In…

程序结束后去哪儿了?

大家好&#xff0c;我是写代码的篮球球痴&#xff0c;转发一篇卓老师的文章&#xff0c;文章中的内容我之前做单片机的时候也有遇到过。推荐给大家看看~简 介&#xff1a; 对于嵌入式系统&#xff0c;如果没有运行RTOS&#xff0c;那么程序开发中的 主函数&#xff08;main()&a…

CodeSmith终极玩法

CodeSmith是一个模仿asp.net运行机制的代码生成器, 运行时分析模板(相当aspx文件)的预编译指令和主体内容, 生成一个继承自CodeSmith.Engine.CodeTemplate(相当于System.Web.UI.Page)或者一个在Inherites预编译指令指定的类(相当于CodeBehind类)的源码, 且把它编译. 然后把这个…

bom与dom

区别 BOM&#xff08;Browser Object Model&#xff09; BOM 即浏览器对象模型&#xff0c;BOM没有相关标准&#xff0c;BOM的最核心对象是window对象。window对象既为javascript访问浏览器提供API&#xff0c;同时在ECMAScript中充当Global对象。BOM和浏览器关系密切&#xff…

有些事不用听别人的

今天在群里跟几个朋友聊天&#xff0c;然后说了自己的想法&#xff0c;最近很多人在说公众号不会有好的发展&#xff0c;写文章也是没有出路的。不过这个是事实。短视频才是可能是出路&#xff0c;短视频是个很大的蛋糕&#xff0c;从表达方式上来说&#xff0c;视频的表达方式…

25个优秀的设计机构网站设计案例

今天&#xff0c;我们一起来欣赏网站设计工作室自己的网站。设计公司的网站除了要能够吸引客户以外&#xff0c;还要通过他们自己的网站向客户展示他们的设计理念和风格。这里收集的25个优秀的设计机构网站既有清爽简洁风格的&#xff0c;也有色彩丰富&#xff0c;图文并茂的&a…

一个适用各类场合的Makefile模板

1.写在前面对于Windows下开发&#xff0c;很多IDE都集成了编译器&#xff0c;如Visual Studio&#xff0c;提供了“一键编译”&#xff0c;编码完成后只需一个操作即可完成编译、链接、生成目标文件。Linux开发与Windows不同&#xff0c;Linux下一般用的的gcc/g编译器&#xff…

毕业十年|我的嵌入式AI学习路线(笔记、代码)

嵌入式从业者接下来会有怎样的黄金十年&#xff1f;在物联网和人工智能的促进下&#xff0c;嵌入式在未来的5-10年内会迎来更多的发展机会&#xff0c;一方面嵌入式开发会迎来更多的应用场景&#xff0c;另一方面嵌入式开发的技术体系也会逐渐丰富&#xff0c;从而拓展物联网开…

在艰苦年代,买不起万用表,怎么测量电路电压?

如何测量电压&#xff1f;有这样一张图片&#xff1a;用舌头来测量&#xff1f;开玩笑的吧&#xff01;不过这张照片勾起了我的回忆&#xff1a;有一位玩电子的老前辈&#xff0c;现在已经70多岁了。和他聊天&#xff0c;他说&#xff0c;当年他们玩电子&#xff0c;条件非常艰…

VBA学习_5:流程控制

1、If If Range("B2").Value >60 Then Range("C2").Value "及格" Else Range("C2").Value"不及格"如果。。。那么。。。。否则。。。。 If Range("B2").Value > 60 ThenRange("C2").Value "…

嵌入式的薪资还是挺低的

我最近和一个比较好的朋友聊天&#xff0c;我这个朋友在一家比较传统的公司&#xff0c;在这个公司做嵌入式软件开发&#xff0c;偏系统方向的。然后最近拿到了几个不错的offer&#xff0c;让我帮忙看看。这几个offer我就不发出来给大家看了。可以肯定的是&#xff0c;这几个of…

新手必看!单片机掉电检测与数据掉电保存方案

单片机在正常工作时&#xff0c;因某种原因造成突然掉电&#xff0c;将会丢失数据存储器&#xff08;RAM&#xff09;里的数据。在某些应用场合如测量、控制等领域&#xff0c;单片机正常工作中采集和运算出一些重要数据&#xff0c;待下次上电后需要恢复这些重要数据。因此&am…

Study Notes ASP.Net 之Theme Skin

基本概念&#xff1a; Theme 和 Skin用以定义页面中各个控件的显示样式&#xff0c;如字体大小&#xff0c;前/后景色等等。一个Theme可以包括多个Skin&#xff0c;一个Skin可以定义多个控件的样式。目的&#xff1a; 使得页面样式的制作可以与页面制作分工进行。<?xml:nam…

推荐一个值得加入C++开发者俱乐部

之前我有篇文章提起过&#xff0c;开始进入某厂是从0开始做项目的&#xff0c;当时看到那套SDK软件&#xff0c;而且97%都是用C写的&#xff0c;我的头都大了。后面也是坚持不断的学习&#xff0c;积累&#xff0c;修改&#xff0c;向身边同事请教&#xff0c;加入优秀社群学习…

DataGrid 完全攻略之四 (实现统计)

前台代码&#xff1a;html<% Page language"c#" Codebehind"UserCount.aspx.cs" AutoEventWireup"false" Inherits"MsDataGrid.UserCount" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >…

Window系统下安装Redis

下载Redis Redis官网只提供Linux版本&#xff0c;Windows版本只能去GitHub上下载 Redis官网下载地址&#xff1a;http://redis.io/download GitHub下载地址&#xff1a;https://github.com/MSOpenTech/redis/tags 安装Redis 创建redis文件夹&#xff0c;解压到此目录下&#xf…

iTunes“解决方案”发展历程及研究(上)

以下内容来自于我的《iTunes内容解决方案研究》的PPT&#xff0c;懒得往上敲字了&#xff0c;直接以图片的形式发布&#xff0c;有需要的&#xff0c;我可以提供pdf版本给你&#xff0c;版权所有

Linux下的memcpy函数

之前写过一篇关于 memcpy函数面试的文章几个简单的笔试题里面的代码使用的是char指针来实现&#xff0c;今天我们来看看Linux下面的memcpy函数&#xff0c;它的实现上还是有一些巧妙的。void * memcpy(void * dest, const void *src, size_t n) {if (!(((unsigned long) dest ^…