考虑将几个链接的电子表格移到数据库模型中。但是,我有很多非技术用户,他们几乎不会使用 Excel,但让他们使用 MS Access 之类的东西是不可能的。(或者 OOBase/MySQL,因为我们没有 MS Access)
我想将 Excel 作为报告的主要用户界面,并考虑使用 ODBC 连接,但我以前没有使用过它,不知道它是否合适。
如果我创建查询,将数据导入 Excel 文件并保存...数据是持久的吗?关闭并打开文件后数据是否仍然存在,还是用户每次都必须选择一个查询?
我可以将它用作 Excel 图表(非数据透视表)的源吗?它是否可以轻松使用结构化引用实现类似于 Excel 普通表格的自动化?
我是否可以轻松地根据数据库数据附加用于计算列的 Excel 表,或者最好将此类计算包含在数据库模型本身中?
我知道查询是只读的?有没有可能的数据输入方法可以使用 Excel 而不是 DBMS 中的表单写入数据库?对于最终用户来说,越简单越好。
数据库文件本身将存储在共享网络上。我是否需要在每台本地计算机上配置/安装任何东西才能访问数据?(所有机器都已安装 Excel)
答案1
Excel 会在电子表格中存储查询数据的副本。您可以设置选项,是希望它在加载时刷新,还是仅在某些手动干预或基于 VBA 的事件时刷新。
您可以像使用 Excel 中的其他数据一样使用 Excel 查询数据。在最坏的情况下,如果存在某种限制,您可以将查询的数据复制到新的工作表并“粘贴值”以断开与查询的链接。
是在本地还是在数据库上执行计算列取决于您的性能需求。一方面,某些计算可以在具有高端规格和优化 SQL 引擎的专用数据库服务器上更有效地完成(相信我,Excel 的 ODBC 绝对不是那样的)。另一方面,如果您有数千个客户端访问数据库,您可能会遇到 CPU 或吞吐量限制,如果您添加大量要传输的额外数据,特别是如果客户端和数据库之间没有特别快的上行链路。因此,您可能希望让每个客户端的工作站执行计算字段,这样可以将负载分散到所有客户端,并减少通过网络传输的数据量。不过,Excel 在处理海量数据方面不如专用数据库那么高效。答案是“视情况而定”。
Excel 中的“Microsoft Query”引擎本身可能无法执行更新/插入查询,但您可以编写 VBA 宏或 C# 插件,使用 ADO 在后端运行任意 SQL。
这完全取决于您选择的数据库。到目前为止,您提到了 Access、OOBase(我甚至不确定这是否可行)和 MySQL。任何安装了 Access 的系统上都有内置的 ODBC 驱动程序。MySQL 必须在每个客户端系统上安装自定义的 MySQL ODBC 驱动程序。大多数其他数据库也需要在系统上安装某种 ODBC 驱动程序,除非您运气好,并且您要使用的 DB 已经随 Windows 提供了内置驱动程序。