gpt4 book ai didi

vba - 将集合和对象写入磁盘并稍后重新导入的最佳策略是什么?

转载 作者:行者123 更新时间:2023-12-02 10:57:46 24 4
gpt4 key购买 nike

我设置了许多集合和对象,它们具有四层深度的一对多关系。 CollectionA 包含多个 CollectionB 对象,CollectionB 包含多个 CollectionC 对象和 CollectionC 包含许多 Content 对象。

用户花时间用必要的数据填充所有这些集合和对象后,他们需要能够保存每个对象的所有属性,然后读取输出文件并从中断的地方开始。

我知道这是一个有点宽泛的问题,所以我想看看我应该在研究中朝哪个方向去做这件事。现在我最关心的是文件 I/O,我正在考虑两种不同的路线。

这是一个 Excel 项目,所以我想我可以从上到下循环遍历所有集合和对象,并将它们的值写入电子表格,然后循环遍历电子表格行并将它们输出到分隔文本文件。然后执行相反的操作以读回文本文件 - 从文本到电子表格,然后从电子表格读入集合和对象。

也许另一个选择是绕过电子表格并使用 TextStream?如果我计划在将来某个时候将此 VBA 应用程序转换为独立的 VB.NET,这是否可行?

最佳答案

一个好的选择是将集合存储为 XML 文件。之后添加或读取单个元素会相对容易;如果您尝试将 4+ 维数据排列到二维电子表格中,您将免遭索引噩梦的困扰,而索引噩梦将不可避免地发生。它们是文本文件,因此人类可读;如果文件大小成为问题,只需压缩它们即可。

您只需设计一种适当的格式,即标签名称等,请参阅本答案末尾的示例。

编辑:如果将数据打包到 Excel 工作簿中对您来说确实很重要,那么您只需将 xml 代码放到其中一张工作表上并将其存储在那里...我以前已经这样做过。

创建如下所示的 XML 文档:

Set xmlFatAssCollectionA = CreateObject("Msxml2.DOMDocument.6.0")

然后编辑它:循环遍历您的集合,根据需要将每个元素附加为较大集合的子元素。完成后,保存 XML 文档。

xmlFatAssCollectionA.save("C:\MyDir\MyCollection.xml")

文档:http://msdn.microsoft.com/en-us/library/ms756987%28v=VS.85%29.aspx

您可以使用 XPath 访问所需的节点/元素。 XPath tutorial

您生成的 xml 文件可能如下所示。我只添加了一个 collectionB 对象,并省略了整个 collectionA 层,但你明白了。

<?xml version="1.0" encoding="ISO-8859-1"?>

<bObject>
<cObject>
<contentObject>
<title lang="da">Kejserens nye klæder</title>
<author>H.C. Andersen</author>
<price>priceless</price>
</contentObject>
</cObject>
<cObject>
<contentObject>
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</contentObject>
<contentObject>
<title lang="fr">Les Schtroumpfs</title>
<author>Some person</author>
<year>1985</year>
</contentObject>
</cObject>
</bObject>

关于vba - 将集合和对象写入磁盘并稍后重新导入的最佳策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5235465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com