2011-11-16 72 views
1

在我的asp.net mvc3(razor)项目中,我有一个非常类似于telerik's demo的网格,我需要从中做出报告,以便用户可以打印并存档页。如何将数据网格导出为报表以供打印

可能有100多行,因此它可能需要几页,并且有一些细节我想添加到网格中不存在的报告中,但是我(当然)在服务器中。


例子:

public class Employee 
{ 
    public int ID {get; set;} 
    public long Phone {get; set;} 
    public double Salary {get; set;} 
    public string Address {get; set;} 
    public string Country {get; set;} 
} 

我怎样才能让一个类似的报告:
enter image description here

+0

一种选择可能是对打印一个单独的样式表,并把它添加到页。这样用户就可以打印他们正在查看的页面以获取报告,而不必通过其他操作生成报告。 (这里没有足够的信息来涵盖所有其他可能的选项。) – David

+0

打印样式表允许使用不同的表示,但不允许其他数据,这似乎是需要的。除非这些数据被隐藏在视图中,并且在打印样式表中可见,这当然会浪费带宽。 –

+0

@David感谢您的回复。假设我有一份员工名单,我需要编写一份报告 - PDF/EXCEL/WORD并不重要。 – gdoron

回答

1

如果你需要做的是将数据导出到一个CSV文件(每对上述问题的评论),然后here's a quick tutorial如何可以在ASP.NET中完成(无论是在WebForms页面还是MVC操作)。

由于您使用的是MVC,我建议您更进一步,并将creating a custom action result从控制器逻辑中抽象出来。

基本上,您所做的只是手动将您的数据行写入HttpResponse(设置一些标头值之后)。在这种情况下,CSV将是一个非常简单的方法,因为它没有特殊的格式。它只是用逗号分隔的文本,在行之间有回车符。

当然,你的数据包含任何逗号/换行/等,可抛出一个扳手到作品...

+0

对不起,但我的老板说这个CSV太丑了。必须有一个简单的报告生成器。 – gdoron

+1

@gdoron:你的老板应该首先提出要求,而不是在实施后改变主意:)如果他想要一个全面的报告,那么你可以使用Report Viewer控件并设计一个报告rdlc文件:http ://msdn.microsoft.com/en-us/library/ms251671%28v=VS.100%29.aspx我听说Visual Studio 2008的报表设计器实际上比2010年好,但我不知道第一 - 手。我个人不喜欢使用rdlc文件,但有些人会这样做。另外一个好处是,如果您想要集中报告,您可以将它们转移到SSRS服务器。 – David

相关问题