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

5
如何使用Excel生成可自定义的最终用户报告。 根据某些查询从Oracle / SQL服务器数据库获取数据并在Excel中生成报告。
我想为最终用户(具有Excel和数据库查询编写知识)设计解决方案,以根据他的变化要求生成报告,以便他不需要依赖开发团队进行日常修改。
我之前使用C#和Crystal报告设计了这种类型的应用程序,需要三件事: 1.具有数据库查询的Crystal报告模板 2.筛选条件(从数据库中读取数据的条件)。 3.动态用户控件(例如文本框,下拉列表等),根据过滤条件组件生成所需的控件(由最终用户在数据库表中定义)。
如果最终用户熟悉Crystal报告设计,则可以设计自己的Crystal报告模板,并嵌入Crystal报告中的数据库查询。我的软件根据报告模板中定义的要素生成动态用户控件。将这些筛选条件传递给Crystal报告中定义的查询,以便按其筛选条件生成所需的报告。这有助于满足每天报告相关的变化要求。
现在我想使用Excel设计类似的解决方案,即将Crystal报告模板替换为Excel模板。 我的初始提议是这样的,我将使用具有少量固定参数和几个可变报告参数(根据查询从数据库中获取)的Excel模板替换Crystal报告,其余部分将使用我之前的解决方案。
我不知道: 1.如何在Excel中定义报告参数? 2.如何生成多页报告(当数据库返回多个记录的数据集时)? 3.如何像Crystal报告一样分页报告,当结果要在多个页面上显示时? 4.如何在Excel中定义报告头和页脚区域,以在多页报告上显示?
我知道可以使用宏编程(在该Excel报告模板中定义)来完成这些事情,但这对最终用户来说并不容易,我想有一个简单的通用解决方案,我可以在我的C#程序中实现一次,以便最终用户(具有少量Excel知识)可以根据需要设计/修改报告,而无需进行太多编程麻烦,就像我在以前的解决方案(C#和Crystal报告)中所做的那样。
提前感谢您的宝贵时间,支持和指导。
问候。 戈帕尔希克。
2个回答

2

这将是一个非常具有挑战性的项目,主要因为Excel并不像Crystal Reports一样是一个真正的报告工具。我在Excel中创建了很多报告,每一个都是一种定制的解决方案,以满足用户的需求。在Excel中创建一个通用的报告工具需要填补Excel特性集中的许多空白。

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

实际上,在Excel中并没有报告参数,至少没有像Crystal Reports那样的参数。如果您计划使用C#和VSTO,则可以为用户创建一个表单(或使用任务窗格)以输入参数。您还可以尝试使用VBA / VSTO并使用本机Excel数据对象(QueryTables、ListObjects和PivotTables),这可能会为您提供一些预构建的参数选项。如果您希望用户能够创建自己的报告,则需要创建某种报告向导来帮助他们设置和管理这些“参数”。

当数据库返回多个记录数据集时如何生成多页报告?

当结果需要在多个页面上显示时,如何像Crystal Report一样分页报告?

如果我理解得正确,这两个问题都很类似。你在Crystal Reports中看到的所有分页功能(例如“保留部分在一起”,“重复标题”等)都需要在Excel中编码,因为它们实际上并不存在。由于Excel并没有类似Crystal Reports的分组,所以这将是一个具有挑战性的问题,我想。如何在Excel中定义区域作为在新页面上打印时要“保持在一起”的内容?在前一页末尾添加空白空间如何操作(Excel通常会尝试缩放大小)?对象模型在那里,并且当然可以实现,只是非常耗时和难以处理。

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

这其实并不太难,因为您可以使用页面标题和页脚对象。但是,您必须手动更新值,因为通常无法在那里有“动态”信息(没有公式,没有数据对象等)。如果需要更灵活性,则还可以使用“在顶部重复的行”。

总的来说,Excel实际上并不适合此类工作。 Excel可以成为功能强大的报告工具,但通常需要对Excel非常熟悉的人,并且即使对于电源用户而言,某些功能也不存在(除非编写一些庞大的VBA)。


1

看一下这个:

使用C#创建Excel(.XLS和.XLSX)文件

它使您能够根据需求创建Excel模板文件。极端情况下,最终用户只需要自定义模板。这很容易做到。自定义包括或删除列、标签、公式等。

对于具有Excel和数据库查询编写知识的终端用户来说,这个解决方案似乎非常完美。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接