@SteveB 进一步了解我的评论和您之前的回复..请阅读以下内容。
@SteveB 看起来是个好主意.. 但是为什么要使用 xml?我尝试使用 xml,但我不知道在文本文件中写入 xml 的格式是什么?你可以解释吗。我们也可以只使用 .csv 吗?因为编写一个简单的 .csv 文件看起来很容易。整个解决方案将如何工作.. 假设我是用户.. 单击并打开一个 php 页面.. excel 模板应该存储在哪里.. 以及它将如何弹出给用户.. 当另一个用户连接到时会发生什么同一页等。我想在模板文件中保留数据透视表、excel 宏和 vba、图像和图表。– ihightower
@ihightower:xml 比 CSV 更容易生成(至少使用 .Net 和 C#,这是我的主要编程语言),但我认为这也适用于 CSV。提供 Excel 模板很容易......只需将其作为静态内容提供,因为 Excel 文件不是动态生成的。– 史蒂夫 B
我的发现..
XML 与 CSV
仅当不需要 Excel 表格格式时,用于导入的 CSV 格式才适用。总而言之,您不能突出显示备用行、滚动期间可用的列标题等,因为我发现您不能同时拥有外部数据和表格格式。
将数据连接表转换为“格式为表”时出现的错误是:
Your selection overlaps one or more external data ranges.
Do you want to convert the selection to a table and remove
all external connection?
当然,我不希望那样..但是使用xml格式进行导入数据连接...表格格式可以保持这样的截图:
并且,当您滚动一屏时..屏幕将如下所示..您可以看到列标题 A、B、C 自动转换为数据标题(ISBN、日期、标题...)
所以,我们应该寻求一个 xml 解决方案。我们正在研究如何使用 php。但是,使用 CSV 进行测试,大约 10 列 x 20,000 行数据......它工作得非常好。Web 服务器的刷新也很有效。
把所有部分放在一起
我与我的团队进行了内部讨论,我们认为这对我们真的有用。现在,我们正在就用户操作的交付和流程进行头脑风暴,以交付带有他从 php 生成的数据的 Excel 模板报告。
好的..我们有什么开始?
- Excel 模板(例如 staff_analysis_template.xlsm)。这将包含所有数据透视表、excel 宏、按钮、图像、图表,以及 excel 文件可以包含的所有内容。
- 在模板文件中将有一张名为“数据”的工作表。这是 xml 或 csv 导入最终将成为......文件中所有数据透视表和图表的随时可用的地方。
- 一个 php 网页,其中包含列表框和文本字段供用户过滤数据.. 他将单击搜索...这将提供网页结果和链接以在 excel 模板中查看相同数据在工作表中包含所有结果数据的文件:数据。
这是带有示例数据的 Excel 模板。在此屏幕截图中...您可以看到
- Sheet:将从php生成的xml数据将被连接并最终进入的数据。
- 工作表:摘要。可以使用 Excel 中的所有公式......并根据数据呈现给用户。
- Sheet: Pivot可以有基于数据的数据透视表和图表,并且可以在文件打开时自动刷新。
- VBA也可用.. 例如,该按钮可用于刷新数据或执行任何其他工作。
我们基本上可以使用 Excel 为我们提供的所有东西。生成的 xml 文件可以留在网络服务器上。数据连接也可以是 URL 或文件。
sourceFile="http://xxxxx/test_data3.csv" 或
sourceFile="C:\Users\Fiaz\Documents\Magic Briefcase\Learn\excel\test_data3.csv"
需要弄清楚
尚未弄清楚的部分是如何将这一切与无缝的用户体验连接在一起。也就是说,用户不应该首先被迫保存文件或手动连接xml等。excel模板必须打开那里有所需的数据和所有可用的分析。如果用户需要保存它,他将使用另存为并复制到本地机器。
我们对这种无缝用户体验的想法是这样的:
- 生成唯一的 xml 数据文件(例如 YYYYMMDDHHMMSS_username_pagename.xml)并将其放在某个 tmp 服务器文件夹中。
- 将模板文件复制到带有 xml 文件更新连接的 tmp 服务器文件夹(为此,我们需要解压缩 .xlsx 或 .xlsm 文件),使用文件名和文件夹更新 (xl/connections.xml) 中的连接信息: YYYYMMDDHHMMSS_username_pagename.xml 然后将其压缩并通过网络以 .xlsm 或 .xlsx 格式交付给用户
我一步一步手动尝试,它确实有效。
非常感谢您对此的任何想法,以使其真正变得更好并保持简单。
PHPExcel作者@MarkBaker需要反馈:
@MarkBaker:通过阅读您在 PHPExcel 其他帖子中的评论,我了解到我们不能使用 PHPExcel 做同样的事情(即使用原始的 excel 模板)。因此,SteveB 建议并由我在上面详细阐述的解决方案似乎对此目的更强大。我们可以保持原始 excel 模板文件与所有资产(数据透视表、vba 等)保持原样。服务器也不需要有 Excel。
那么,我们是否可以期望 PHPExcel 本身在将来的某个时候可以使用此功能。然后,我们可以更有信心使用 PHPExcel 大师本人的标准技术。
在我看来,PHPExcel 对于发票类型的报告和许多其他类型的报告非常有用,但不适用于商业智能类型的分析......这需要使用数据透视表和复杂的图表和代码等。
请发表您的意见。我很想从您的观点中看到它如何变得更好。
让一切尽可能简单,但不要更简单。艾尔伯特爱因斯坦