如何在Excel中创build基于模板的用户可定制报告

Excel如何用于生成最终用户可定制报告。 数据需要根据某些查询从oracle / SQL server数据库中提取,需要在Excel中生成报表。

我想根据自己的变化需求,为报表生成devise一个解决scheme,让他能够根据自己的变化要求为报表生成一个解决scheme,以便今天在报表需求方面不受开发团队的影响。

我之前使用C#&Crystal报表devise了这种types的应用程序,这需要三件事情:1.具有数据库查询的Crystal报表模板2.过滤条件(数据将从数据库读取数据)。 3.dynamic用户控制(如文本框,下拉等)生成组件按照过滤标准控制要求(由最终用户在数据库表中定义)。

如果最终用户熟悉水晶报表devise,那么他可以devise自己的水晶报表模板以及embedded在水晶报表中的数据库查询。 我的软件按照该报告模板的数据库中的定义生成dynamic用户控件。 这些过滤条件将传递给Crystal报表中定义的查询,以便根据其过滤条件生成所需的报表。 这帮助他今天在餐饮部门报告相关变化的要求。

现在我想用Exceldevise类似的解决scheme,即用Excel模板replaceCrystal报表模板。 我最初的build议是这样的,我将用excel模板replace水晶报表,具有固定参数和几个可变的报表参数(这将来自数据库根据查询),rest我将使用从我以前的解决scheme。

我不知道

  • 如何在Excel中定义报告参数?
  • 如何生成多页面报告(当数据库返回多个logging的数据集)?
  • 如何在多页面上显示结果时如何将水晶报表进行分页?
  • 如何在Excel中定义报表页眉和页脚区域以在多个页面上显示报表?

我知道这些东西可以使用macros编程(在Excel报表模板中定义)来完成,但对于最终用户来说这并不容易,我想要一个简单的通用解决scheme,我可以在我的c#程序中实现一次,以便最终用户(具有一点excel知识)可以根据自己的需要devise/修改报告,没有编程的麻烦,就像我以前的解决scheme(c#&Crystal报告)一样。

提前感谢您节省宝贵的时间,支持和指导。

问候。 Gopal Parikh。

这将是一个非常具有挑战性的项目,主要是因为Excel并不是Crystal Reports的报告工具。 我在Excel中创build了大量的报表,并且每个报表都是一个定制的解决scheme,适合用户的需求。 在Excel中创build通用报表工具需要在Excel的function集中进行大量的“填充空白”。

如何在Excel中定义报告参数?

Excel中确实没有报表参数,至less与Crystal Reports没有相同的方式。 如果您计划使用C#和VSTO,那么您可以创build一个窗体(或使用任务窗格)以供用户input参数。 您也可以尝试使用VBA / VSTO,并使用本机Excel数据对象(QueryTables,ListObjects和PivotTables),这可能会为您提供一些预build的参数选项。 如果您希望用户能够创build自己的报告,则需要创build某种报告向导来帮助他们设置和pipe理这些“参数”。

如何生成多页面报告(当数据库返回多个logging的数据集)?

如何在多页面上显示结果时如何将水晶报表进行分页?

如果我理解正确,这两个都是类似的问题。 在Crystal Reports中看到的所有分页function(例如,“保留区域”,“重复标题”等)将需要在Excel中编码,因为它们不存在。 因为Excel没有类似于Crystal Reports的分组,所以我认为这将是一个具有挑战性的问题。 在Excel中如何定义一个区域作为在新页面上打印时“保持在一起”的东西? 如何在上一页末尾添加空格(Excel通常会尝试缩放大小)? 对象模型就在那里,它看起来确实可行,只是非常耗时而且很费力。

如何在Excel中定义报表页眉和页脚区域以在多页面报表上显示?

这实际上不是太难,因为您可以使用页眉和页脚对象。 但是,您必须手动更新这些值,因为您通常不能在其中拥有“dynamic”信息(没有公式,没有数据对象等)。 如果你需要更多的灵活性,你也可以使用“行在顶部重复”。

一般来说,Excel实际上是这种工作的错误工具。 Excel可以是一个function强大的报表工具,但通常需要一个非常熟悉Excel的人,甚至有些高级用户(没有编写一些强大的VBA),其中一些function也不存在。

看看这个:

从C#创buildExcel(.XLS和.XLSX)文件

它使您能够根据您的需要创buildExcel模板文件。 极端情况下的最终用户只需要自定义模板。 这是一件容易的事情。 自定义以包含或删除列,标签,公式等

这个解决scheme对于有Excel和数据库查询编写知识的最终用户来说似乎是非常完美的。