是否可以将ASP面板中的所有内容导出到.DOC,.XLS

时间:2012-09-04 12:53:36

标签: c# asp.net export

在遇到麻烦之前,我想与你确认一些事情。我正在一个仪表板项目中工作,其中包含许多控件。一切都将插入到一个面板控件中。控件将是,表格,网格,图像,图表,一些jquery插件。

我想提供word,excel,pdf的导出选项。是否有可能在asp.net中将具有所有控件的单个面板导出到word文档。

说出你的建议

5 个答案:

答案 0 :(得分:0)

如果您有任何动态客户端代码,则无法执行此操作。

没有办法将客户端文档的一部分转换为.doc(最接近你可以做的是打印到pdf,这不是很有用)

通常你会通过像aspose这样的库生成.doc来做类似服务器端的事情 - 但是如果你要呈现涉及jquery插件的东西,这将是一个真正的痛苦。

要获得您想要的结果,您可能不得不咬住子弹并重新创建服务器端的所有内容以生成.doc然后客户端可以下载。

答案 1 :(得分:0)

您可以使用Javascript html2Canvas制作屏幕截图,例如根据页面中的信息构建屏幕,我不确定但您可以将此信息发送到服务器,然后创建PDF将其发送到浏览器(理论上至少可能)

答案 2 :(得分:0)

是的,实际上非常简单。以下是将Gridview导出到Excel的示例。你可以用任何控件做同样的事情。而不是this.gvRequests.RenderControl,替换您的Panel control.RenderControl。玩弄它,看看它是怎么回事。

 //Export the datagrid to Excel
        System.IO.StringWriter sw = new System.IO.StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);

        Response.AddHeader("content-disposition", "attachment; filename=SearchResults.xls");
        Response.ClearContent();


        Response.ContentType = "application/vnd.ms-excel";
        this.gvRequests.RenderControl(htw);
        Response.Write(sw.ToString());
        Response.Flush();
        Response.End();

答案 3 :(得分:0)

是,

  

static public void RenderToExcel(Panel panelReport1,Panel   panelReport2,Panel panelReport3,string strFileName)       {           HttpContext.Current.Response.Clear();           字符串附件="附件;文件名=" + strFileName +" .xls&#34 ;;           //HttpContext.Current.Response.AddHeader("content-disposition" ;,   附件);           HttpContext.Current.Response.ContentType =" application / vnd.ms-excel&#34 ;;           HttpContext.Current.Response.AddHeader(" content-disposition",附件);           HttpContext.Current.Response.Charset ="&#34 ;;           //HttpContext.Current.Response.ContentType =" application / vnd.xls&#34 ;;

    //HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding(1252);
    StringWriter sw = new StringWriter();
    HtmlTextWriter htw = new HtmlTextWriter(sw);
    panelReport1.RenderControl(htw);
    if (panelReport2 != null)
    {
        panelReport2.RenderControl(htw);
        if (panelReport3 != null)
            panelReport3.RenderControl(htw);
    }
    HttpContext.Current.Response.Write(sw.ToString());
    Response.End();


}

答案 4 :(得分:-1)

您可以在代码中使用WebBrowser控件服务器端在服务器内存中请求您自己的页面并以此方式生成图像,或使用此库(更简单)http://www.websitesscreenshot.com/

修改

稍微思考一下你想要的东西已经可用了!

用户进入网页,按ALT +打印屏幕,转到Word或Excel,然后按CTRL + P !!!工作完成,它都是内置\ 0 /早回家:)