http://dotnet.aspx.cc/ShowDetail.aspx?id=BF0A54F9-C7C7-4200-BD9A-802AC1F5DE50
解决方案 »
- 很久以前写的五子棋程序
- -----C# 导出excel 加超链接 怎么实现啊---------
- c# color类
- 帮忙看下 哪句话是控制分页的
- 看看有没有需要的资源,下载去吧
- 為何c#中向Access數據庫插入不了日期數據?
- 用tcpListener和直接socket进行监听有什么分别?
- 关于鼠标拖动时连带的目标图像的显示问题,就像windows的拖动现实效果一样,急!谢!
- C#中如何实现对象数据库存储?
- 用人打算使用.net编写桌面程序吗?
- Microsoft Visual SourceSafe 最高版本是不是6.0?微软的这个东西好像一直没有新版本?
- ------------------------------求助----------------------------------------
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.WriteFile(@"c:\my.xls");
Response.End();
===============================
注意:如果上面的ContentType 写成 "application/vnd.ms-excel"
则会在浏览器中打开Excel程序。
private void downeml(string yjid,string sn)
{
string sql="select 附件名称,附件地址 from 普通邮件 where 验证码='"+sn+"' and 附件大小>0 and id="+yjid;
adohelper myado=new adohelper();
SqlDataReader dr=myado.ExecuteRead(sql);
if(dr.Read())
{
string fjname,fjaddress,fjn1,fjn2;
fjname=dr["附件名称"].ToString();
fjaddress=dr["附件地址"].ToString();
dr.Close(); fjn1=System.IO.Path.GetFileNameWithoutExtension(fjname);
fjn2=System.IO.Path.GetExtension(fjname);
fjname=CutString(fjn1,28)+fjn2; fjaddress=Server.MapPath("../Emailfile/"+fjaddress);
try
{
FileStream MyFileStream=new FileStream(fjaddress, FileMode.Open,FileAccess.Read,FileShare.Read);
long FileSize = MyFileStream.Length;
byte[] Buffer = new byte[(int)FileSize];
MyFileStream.Read(Buffer, 0, (int)FileSize);
MyFileStream.Close(); Response.Expires=0;
Response.Buffer=true;
Response.Clear();
Response.AppendHeader("Content-Disposition","attachment; filename="+HttpUtility.UrlEncode(fjname,System.Text.Encoding.UTF8));
Response.ContentType="application/octet-stream";
Response.BinaryWrite(Buffer);
}
catch
{
Response.Write(@"<script language='javascript'>alert('附件下载失败,原因是该附件已被删除或服务器正忙,请稍候重试!');window.close();</script>");
Response.End();
}
}
else
{
dr.Close();
Response.Write(@"<script language='javascript'>alert('您没有访问该邮件的权限!');window.close();</script>");
Response.End();
}
}private string CutString(string inputString,int len)
{
ASCIIEncoding ascii = new ASCIIEncoding();
int tempLen=0;
string tempString="";
byte[] s = ascii.GetBytes(inputString);
for(int i=0;i<s.Length;i++)
{
if((int)s[i]==63)
{
tempLen+=2;
}
else
{
tempLen+=1;
}
try
{
tempString+=inputString.Substring(i,1);
}
catch
{
break;
} if(tempLen>len)
break;
}
//如果截过则加上半个省略号
byte[] mybyte=System.Text.Encoding.Default.GetBytes(inputString);
if(mybyte.Length>len)
tempString+="(…)"; return tempString;
}
using System.Text;
using System.Web;
using System.Web.UI.WebControls;
namespace toExcel
{
public class DataGridToCSV
{
public void GenerateFile(System.Web.UI.Page page,System.Web.UI.WebControls.DataGrid MyDataGrid,string FileName)
{
HttpResponse resp;
int colCount = MyDataGrid.Columns.Count - 1;
resp = page.Response;
resp.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName); string colHeaders = "";
StringBuilder strItems = new StringBuilder();
DataGridColumn myCol;
int i; for(i=0;i<=colCount;i++)
{
myCol = MyDataGrid.Columns[i];
if(myCol.Visible==true)
{
colHeaders = colHeaders + myCol.HeaderText.ToString() + ",";
}
} if(colHeaders.Length>0)
{
colHeaders = colHeaders.Substring(0,colHeaders.LastIndexOf(","));
}
resp.Write(colHeaders);
foreach(DataGridItem item in MyDataGrid.Items)
{
resp.Write(this.FormatExportRow(colCount,item,MyDataGrid));
}
}
private string FormatExportRow(int colCount,DataGridItem Item,DataGrid MyDataGrid)
{
string strItem="";
int i; for(i=0;i<=colCount;i++)
{
if(MyDataGrid.Columns[i].Visible==true)
{
if(Item.Cells[i].Text == null)
{
Item.Cells[i].Text="";
}
if(i==colCount)
{
strItem += Item.Cells[i].Text.ToString() + "<BR>";
}
else
{
strItem += Item.Cells[i].Text.ToString() + ",";
}
}
}
return strItem;
}
}
}然后在你的下载页面:
private void btnDownLoad_Click(object sender, System.EventArgs e)
{
toExcel.DataGridToCSV toXls = new toExcel.DataGridToCSV();
toXls.GenerateFile(this.Page,this.grdDisp,"1.xls");
}
using System;
using System.Text;
using System.Web;
using System.Web.UI.WebControls;
namespace toExcel
{
public class DataGridToCSV
{
public void GenerateFile(System.Web.UI.Page page,System.Web.UI.WebControls.DataGrid MyDataGrid,string FileName)
{
HttpResponse resp;
int colCount = MyDataGrid.Columns.Count - 1;
resp = page.Response;
resp.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName); string colHeaders = "";
StringBuilder strItems = new StringBuilder();
DataGridColumn myCol;
int i; for(i=0;i<=colCount;i++)
{
myCol = MyDataGrid.Columns[i];
if(myCol.Visible==true)
{
colHeaders = colHeaders + myCol.HeaderText.ToString() + ",";
}
} if(colHeaders.Length>0)
{
colHeaders = colHeaders.Substring(0,colHeaders.LastIndexOf(","));
}
resp.Write(colHeaders);
resp.Write(System.Environment.NewLine);
foreach(DataGridItem item in MyDataGrid.Items)
{
resp.Write(this.FormatExportRow(colCount,item,MyDataGrid));
}
resp.End();
}
private string FormatExportRow(int colCount,DataGridItem Item,DataGrid MyDataGrid)
{
string strItem="";
int i; for(i=0;i<=colCount;i++)
{
if(MyDataGrid.Columns[i].Visible==true)
{
if(Item.Cells[i].Text == null)
{
Item.Cells[i].Text="";
}
if(i==colCount)
{
strItem += Item.Cells[i].Text.ToString() + System.Environment.NewLine;
}
else
{
strItem += Item.Cells[i].Text.ToString() + ",";
}
}
}
return strItem;
}
}
}