xlsx 存档中 sharedStrings.xml 的更改不会更改 Excel 内容

xlsx 存档中 sharedStrings.xml 的更改不会更改 Excel 内容

Excel 文件格式.xlsx实际上是一个可以检查的档案,如果将其重命名为,则可以编辑其内容.zip

但是,对存档sharedStrings.xml中的文件的更改.xlsx不会改变在 Excel 中重新打开时所显示的内容。

有人能解释为什么以及如何更改文本字符串以便更改显示在 Excel 中吗?

我创建了一些测试文件,例如在 A1 单元格中包含一个文本字符串。该文本字符串存在于文件中sharedStrings.xml,但我在存档中的其他任何地方都找不到它.xlsx,但遗憾的是,更改并不可见。

答案1

Sheet1.xml在这种情况下,您必须找到工作表文件。

您可以在这些文件中找到字符串,或者更准确地说,公式 ( <f></f>) 及其值 ( <v></v>),并且可以编辑它们。Excel 会反对这一点,您无法将文件从只读更改为非只读,因此您必须保存到其他地方并复制原始文件。此外,显然会有一些微妙的问题,Excel 会对打开文件吹毛求疵,但它会打开。

为了好玩,您可以保留值字符串,这样在打开时它们将显示修改后的公式的错误结果。当然,第一次重新计算会修复它们,但它显示 Excel 在打开时不会重新计算,只是读取已保存的材料,包括公式结果。不确定这是否有用,但是......这很有趣。

嗯...我发现包中的其他文件之一包含某些内容的绝对寻址。因此,如果您的公司分配用户名、网络访问权限等(Windows 的登录名,这里有很多“等等”),它将位于大多数人设置的绝对路径中。谁会将他们的工作转移到 C 盘而不是网络共享上?即使清除了作者/所有权属性,这些路径也足以标记临时用户。如果您的 Windows 登录名为“TMashad”,那么这些绝对路径将包含该内容,那么对于某人来说,使用它有多难?但是谁愿意呢?我希望如此。

呃……可能有点偏离主题了。Sheet1.xml是编辑字符串等所需的内容。我猜你看到的(我没有看到,所以这只是猜测)是输出,所以它不会流向字符串本身,而是流向相反的方向,流入你看到的内容。只流入。

不过,还是很有趣的。我从来没有真正想过,在 XML 包中隐藏着多少真正有趣的材料……

答案2

令人尴尬的是,解决方案与 Excel 无关。相反,我犯的错误是尝试在sharedStrings.xml文件仍在存档中时对其进行编辑zip。虽然尝试保存没有产生错误消息,但文件并未被修改。

一旦我将xml文件从存档中复制出来,对其进行编辑(使用 VS Code),将其拖回来(使用 Windows 中的内置文件资源管理器),然后将其重命名zipxlsx,该文件就会在 Excel 中顺利打开,并显示预期的更改。

这实现了我最初的意图,即执行超出 Excel 内置“替换”对话框范围的替换操作。

相关内容