怎么把服务器端写好的EXCEL模板文件下载到客户端打开?

时间:2021-11-11 17:44:46
我从网上找到两段代码,一是往d:\sample.xls里写东西,二是把datagrid的内容写入EXCEL并下载到客户端,

////////一、写sample.xls
//创建Application对象 
Excel.Application xApp=new Excel.ApplicationClass();
xApp.Visible=true; 
//得到WorkBook对象, 可以用两种方式之一: 下面的是打开已有的文件
Excel.Workbook xBook=xApp.Workbooks._Open(@"D:\Sample.xls",
Missing.Value,Missing.Value,Missing.Value,Missing.Value
,Missing.Value,Missing.Value,Missing.Value,Missing.Value
,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
//xBook=xApp.Workbooks.Add(Missing.Value);//第二种方法:新建文件的代码

//指定要操作的Sheet,两种方式:
Excel.Worksheet xSheet=(Excel.Worksheet)xBook.Sheets[1];      //1
//Excel.Worksheet xSheet=(Excel.Worksheet)xApp.ActiveSheet;   //2

//读取数据,通过Range对象
Excel.Range rng1=xSheet.get_Range("A1",Type.Missing);
Console.WriteLine(rng1.Value2);
//读取,通过Range对象,但使用不同的接口得到Range
Excel.Range rng2=(Excel.Range)xSheet.Cells[3,1];
Console.WriteLine(rng2.Value2);

//写入数据
Excel.Range rng3=xSheet.get_Range("C6",Missing.Value);
rng3.Value2="Hello";
rng3.Interior.ColorIndex=6; //设置Range的背景色

//保存方式一:保存WorkBook
//xBook.SaveAs(@"D:\CData.xls",Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value 
// ,Excel.XlSaveAsAccessMode.xlNoChange,Missing.Value,Missing.Value,Missing.Value
//,Missing.Value,Missing.Value);

//保存方式二:保存WorkSheet
//xSheet.SaveAs(@"D:\CData2.xls",Missing.Value,Missing.Value,Missing.Value,Missing.Value

//,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);

//保存方式三
xBook.Save();
xSheet=null;   
xBook=null;
xApp.Quit(); //这一句是非常重要的,否则Excel对象不能从内存中退出
xApp=null;


/////////////////////////////////////////////////
二、以下代码是把datagrid的内容导到EXCEL,并下载到客户端。

//这个程序会提示下载,并打开一个filename.xls的文件
Response.Clear(); 
Response.Buffer= true; 
Response.Charset="GB2312";    
Response.AppendHeader("Content-Disposition","attachment;filename=FileName.xls"); 
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 
this.EnableViewState = false;    
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad); 
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.DataGrid1.RenderControl(oHtmlTextWriter);    /////////////datagrid1
Response.Write(oStringWriter.ToString());
Response.End();
//////////////////////////////////

初学ASP.NET
我想问怎么把这两段代码结合起来,
即:怎么把服务端写好的EXCEL模板(例如一中的sample.xls)下载到客户端打开?

具体的代码怎么写?直接把上面的this.DataGrid1改成d:\sample.xls不行吧.

另外,EXCEL文件下载时提示保存、打开、取消,怎么不让这个界面出来而直接打开?

13 个解决方案

#1


顶一下

#2


up

#3


window.open(filename)

#4


ding

#5


如果是直接连接下载的话,
“EXCEL文件下载时提示保存、打开、取消,不让这个界面出来而直接打开”
好象不行。
……论坛也有好多人问这样的问题(类似WORD下载不弹出那个界面)
去搜一下能不能嵌入到网页里去。

#6


直接连接吧

#7


up

#8


顶,
如果客户端没有EXCEL的话,只能下载啦

#9


如果客户端有excel,就可以直接打开吗?

#10


ding

#11


up

#12


up

#13


第二种方法,你在服务器生成了excel文件后,ie应该会提示你保存还是打开啊..然后你在保存到你想保存到的位置久可以了啊,
我做的就是这个效果

#1


顶一下

#2


up

#3


window.open(filename)

#4


ding

#5


如果是直接连接下载的话,
“EXCEL文件下载时提示保存、打开、取消,不让这个界面出来而直接打开”
好象不行。
……论坛也有好多人问这样的问题(类似WORD下载不弹出那个界面)
去搜一下能不能嵌入到网页里去。

#6


直接连接吧

#7


up

#8


顶,
如果客户端没有EXCEL的话,只能下载啦

#9


如果客户端有excel,就可以直接打开吗?

#10


ding

#11


up

#12


up

#13


第二种方法,你在服务器生成了excel文件后,ie应该会提示你保存还是打开啊..然后你在保存到你想保存到的位置久可以了啊,
我做的就是这个效果