【Vegas原创】页面(图表+table+GridView)导出为excel(07-12-5更新版)

本文介绍如何使用ASP.NET进行Excel文件的导出,并在Excel中嵌入图表及表格数据。通过具体代码示例展示了如何创建Excel文件、设置文件头、添加图表路径和表格数据。同时针对图表渲染过程中可能出现的问题提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图表+table

    protected void Button3_Click(object sender, EventArgs e)
    
{
        Response.Clear();
        Response.Buffer 
= true;
        Response.Charset 
= "GB2312";
        Response.AppendHeader(
"Content-Disposition""attachment;filename=FileName.xls");
        
// 
        Response.ContentEncoding = System.Text.Encoding.UTF7;
        Response.ContentType 
= "application/ms-excel";//

        System.IO.StringWriter oStringWriter 
= new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter oHtmlTextWriter 
= new System.Web.UI.HtmlTextWriter(oStringWriter);
        
//path like http:// 
        string strPath = "select pms_value from code_list where pms_type='chart_path'";
        DataSet ds 
= db.GetDataSet(strPath);
        
string path = ds.Tables[0].Rows[0][0].ToString();

        
string imagePath = path + this.DaxonTechChartWeb1.ID + "." + this.DaxonTechChartWeb1.ImageType.ToString();

        oHtmlTextWriter.AddAttribute(HtmlTextWriterAttribute.Src, imagePath);

        
//tableExcel is the Table
        tableExcel.RenderControl(oHtmlTextWriter);
        Response.Output.Write(oStringWriter.ToString());

        Response.Flush();
        Response.End();


    }


gridview:

    protected void Button_toExcel_Click(object sender, EventArgs e)
    {
        Response.Clear();
        Response.Buffer 
= true;
        Response.Charset 
= "GB2312";
        Response.AppendHeader(
"Content-Disposition""attachment;filename=FileName.xls");
        
// 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!!
        Response.ContentEncoding = System.Text.Encoding.UTF7;
        Response.ContentType 
= "application/ms-excel";//设置输出文件类型为excel文件。 
        System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter oHtmlTextWriter 
= new System.Web.UI.HtmlTextWriter(oStringWriter);
       
//  turn off paging 
       
        GridView1.AllowPaging 
= false;
        GridView1.Columns[
0].Visible = false;
        GridView1.DataBind(); 
        GridView1.RenderControl(oHtmlTextWriter);
        Response.Output.Write(oStringWriter.ToString());
        Response.Flush();
        Response.End();
        
// turn the paging on again 
        GridView1.AllowPaging = true;
        GridView1.DataBind();

    }



07-12-5更新版
因有些chart在前台有加特效之类的,造成HtmlTextWriter在锁定元件上出错。
此就需要RenderBeginTagRenderEndTag来全部手动写入。

    protected void Button3_Click(object sender, EventArgs e)
    
{
        Response.Clear();
        Response.Buffer 
= true;
        Response.Charset 
= "GB2312";
        Response.AppendHeader(
"Content-Disposition""attachment;filename=FileName.xls");
        
// 
        Response.ContentEncoding = System.Text.Encoding.UTF7;
        Response.ContentType 
= "application/ms-excel";//

        System.IO.StringWriter oStringWriter 
= new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter oHtmlTextWriter 
= new System.Web.UI.HtmlTextWriter(oStringWriter);

        
//path
        string strPath = "select pms_value from code_list where pms_type='chart_path'";
        DataSet ds 
= db.GetDataSet(strPath);
        
string path = ds.Tables[0].Rows[0][0].ToString();
        
string imagePath = path + this.DaxonTechChartWeb1.ID + "." + this.DaxonTechChartWeb1.ImageType.ToString();
        
//this.DaxonTechChartWeb1.ImagePath = imagePath;
        oHtmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Table);
            oHtmlTextWriter.AddAttribute(HtmlTextWriterAttribute.Height, 
this.DaxonTechChartWeb1.Height.Value.ToString());
            oHtmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Tr);
                oHtmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Td);
                    oHtmlTextWriter.AddAttribute(HtmlTextWriterAttribute.Src, imagePath);
                    oHtmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Img);
                oHtmlTextWriter.RenderEndTag();
            oHtmlTextWriter.RenderEndTag();
            oHtmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Tr);
                oHtmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Td);
                    VegasGood.RenderControl(oHtmlTextWriter);
                oHtmlTextWriter.RenderEndTag();
             oHtmlTextWriter.RenderEndTag();
        oHtmlTextWriter.RenderEndTag();
        Response.Output.Write(oStringWriter.ToString());

        Response.Flush();
        Response.End();

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值