日期:2014-05-20 浏览次数:21042 次
this.GridView1.AllowPaging = false;
// Bindcontrols.BindGridView(GridView1, sql);//绑定GridView
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.Write("<meta http-equiv=Content-Type content=text/html;charset=GB2312>");
Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode("导出Excel名称"+".xls", System.Text.Encoding.UTF8) + "");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType = "application/vnd.xls";//设置输出文件类型为excel文件。
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
GridView1.RenderControl(oHtmlTextWriter);
Response.Output.Write(oStringWriter.ToString());
Response.Flush();
Response.End();
this.GridView1.AllowPaging = true;
//重写控件
private void DisableControls(Control gv)
{
LinkButton lb = new LinkButton();
Literal l = new Literal();
string name = String.Empty;
for (int i = 0; i < gv.Controls.Count; i++)
{
if (gv.Controls[i].GetType() == typeof(Button))
{
l.Text = (gv.Controls[i] as Button).Text;
gv.Controls.Remove(gv.Controls[i]);
gv.Controls.AddAt(i, l);
}
if (gv.Controls[i].GetType() == typeof(LinkButton))
{
l.Text = (gv.Controls[i] as LinkButton).Text;
gv.Controls.Remove(gv.Controls[i]);
gv.Controls.AddAt(i, l);
}
if (gv.Controls[i].GetType() == typeof(System.Web.UI.HtmlControls.HtmlInputText))
{
l.Text = (gv.Controls[i] as System.Web.UI.HtmlControls.HtmlInputText).Value;
gv.Controls.Remove(gv.Controls[i]);
gv.Controls.AddAt(i, l);
}
if (gv.Controls[i].HasControls())
{
DisableControls(gv.Controls[i]);
}
}
}
------解决方案--------------------
/// <summary>
/// 根据EXCEL文件名,返回连接字符串
/// </summary>
/// <param name="FileName">Excel文件名</param>
public string GetConnectionString(string fileName)
{
ExcelVersionEnum ev = this.GetExcelVersion(fileName);
string hdr = "HDR=Yes;";
if (this.IsHDR == false) hdr = "HDR=No;";
//HDR = Yes 把第1行作为字段看待
//IMEX = 1 通知驱动程序始终将“互混”数据列作为文本读取
string connStr = string.Empty;
if (ev == ExcelVersionEnum.Excel2007)
connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source = " + @fileName + ";" +
"Extended Properties=\"Excel 12.0 Xml;" + hdr + "Imex=1;\"";
else
connStr = "Provider = Microsoft.Jet.OLEDB.4.0;" +
"Data Source = " + @fileName + ";" +
"Extended Properties=\"Excel 8.0;" + hdr + "Imex=1;\"";
return connStr;
}
------解决方案--------------------
5楼的办法其实是导出HTML。
其他的没仔细看,楼主可以下载我上传的aspose.cells
http://download.csdn.net/source/1862524
使用参考:http://bokee.shinylife.net/blog/article.asp?id=961