2012-09-04 38 views
1

在出现问题之前,我想确认几件事情。我正在一个仪表板项目中,其中包含许多控件。一切都将被插入到一个面板控制中。控件将是,表,网格,图像,图表,一些jQuery插件。是否可以将ASP面板内的所有内容导出为.DOC,.XLS

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

告诉你的建议

回答

0

如果您有任何动态的客户端代码,那么你不能做到这一点。

有没有打开的文档的客户端的一部分插入一个.doc(你可以做的最接近的是一个打印到PDF这是不一样有用)

通常你会做一些事情的方法像使用aspose这样的库生成.doc这样的服务器端 - 但如果您要展示涉及jquery插件的事情,那么这将是一个真正的痛苦。

为了得到想要的结果,您可能需要咬紧牙关并重新创建服务器端的所有内容以生成客户端可以下载的.doc文件。

+0

每个控件是一个单独的用户控件因此,无论从客户端和用于生成控制服务器端代码 –

+0

我使用的是HTML谈论的实际最终HTML时*渲染*。渲染引擎 – PhonicUK

-1

您可以使用WebBrowser控件在服务器端代码,请求自己的网页在服务器内存中,并生成图像这样一来,或使用这个库(容易)http://www.websitesscreenshot.com/

编辑

琢磨之后有一点你想要的已经可用了!

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

0

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

0

是的,其实很简单。这里是一个将Gridview导出到Excel的例子。你可以用任何控件做同样的事情。而不是this.gvRequests.RenderControl,替换您的面板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(); 
+0

亲爱的史蒂夫,感谢您的有用信息,但正如我在我的描述中所说,它将会有像图像和其他控件一样的控件。如果我将图像控件渲染到StringWriter中,输出将是而不是这就是为什么我想知道。 –

0

是,

静态公共无效RenderToExcel(面板panelReport1,面板 panelReport2,面板panelReport3,串strFileName) { HttpContext.Current.Response.Clear(); string attachment =“attachment; filename =”+ strFileName +“.xls”; //HttpContext.Current.Response.AddHeader("content-disposition”, 附着); HttpContext.Current.Response.ContentType =“application/vnd.ms-excel”; HttpContext.Current.Response.AddHeader(“content-disposition”,attachment); HttpContext.Current.Response.Charset =“”; //HttpContext.Current.Response.ContentType =“application/vnd。XLS“;

//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(); 


} 
相关问题