【问题标题】:How to create Template based User Customisable reports in Excel如何在 Excel 中创建基于模板的用户可自定义报告
【发布时间】:2010-07-13 09:31:56
【问题描述】:

如何使用 Excel 生成最终用户可自定义的报告。需要根据一些查询从 oracle / SQL server 数据库中获取数据,并且需要在 Excel 中生成报告。

我想根据他不断变化的需求为最终用户(具有 Excel 和数据库查询编写知识)设计报表生成解决方案,这样他就不必依赖开发团队来修改报表需求。

我之前使用 C# 和 Crystal 报表设计了这种类型的应用程序,它需要三件事: 1.具有数据库查询的水晶报表模板 2.过滤条件(从数据库中读取数据)。 3. 动态用户控件(例如文本框、下拉菜单等)生成组件,根据过滤条件需要控件(由最终用户在数据库表中定义)。

如果最终用户熟悉水晶报表设计,那么他可以设计自己的水晶报表模板以及仅嵌入在水晶报表中的数据库查询。我的软件根据该报告模板的数据库中的定义生成动态用户控件。这些过滤条件被传递给 Crystal 报表中定义的查询,以便可以根据他的过滤条件生成所需的报表。这有助于他在今天的餐饮日报告相关的变化要求。

现在我想使用 Excel 设计类似的解决方案,即将水晶报表模板替换为 Excel 模板。 我最初的建议是这样的,我将用具有很少固定参数和少量可变报告参数(根据查询来自数据库)的 excel 模板替换水晶报告,其余的我将使用我之前的解决方案。

我不知道

  • 如何定义报表参数 Excel 吗?
  • 如何生成多页 报告(当数据库返回数据集时 多于一条记录) ?
  • 如何 像水晶报表一样分页报表 什么时候显示结果 在多个页面上?
  • 如何定义 Excel 中的报表页眉和页脚区域 显示在多个页面上 举报?

我知道这些事情可以使用宏编程(在那个 Excel 报告模板中定义)来完成,但这对最终用户来说并不容易,我想要一个简单的通用解决方案,我可以在我的 c# 程序中实现一次,所以最终用户(几乎没有 excel 知识)可以根据自己的需要设计/修改报表,而不会像我在以前的解决方案(c# 和 Crystal 报表)中那样在编程方面遇到很多麻烦。

提前感谢您抽出宝贵的时间、支持和指导。

问候。 戈帕尔帕里克。

【问题讨论】:

    标签: .net excel


    【解决方案1】:

    这将是一个非常具有挑战性的项目,主要是因为 Excel 不像 Crystal Reports 那样真正是一种报告工具。我在 Excel 中创建了大量报告,每一个都是自定义解决方案,根据用户需求量身定制。在 Excel 中创建通用报告工具需要在 Excel 的功能集中进行大量“填补空白”。

    如何定义报表参数 Excel?

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

    如何生成多页报告 (当数据库返回更多的数据集时 不止一条记录)?

    如何分页 像水晶报告一样报告什么时候 结果将显示在 多页?

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

    如何定义报表页眉和页脚 Excel中要显示的区域 多页报告?

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

    一般来说,Excel 确实不适合此类工作。 Excel 可以是一个功能强大的报告工具,但通常需要非常熟悉 Excel 的人才能使用,而且某些功能甚至不适合高级用户(无需编写大量的 VBA)。

    【讨论】:

      【解决方案2】:

      看看这个:

      Create Excel (.XLS and .XLSX) file from C#

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

      此解决方案似乎非常适合具有 Excel 和数据库查询编写知识的最终用户。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多