Libre Office 对现有的 Excel 表做了什么来使其尺寸膨胀?

Libre Office 对现有的 Excel 表做了什么来使其尺寸膨胀?

我尽量避免在现有的 Excel 创建的工作簿上使用 Libre Office,因为可能会产生不愉快的结果。在这种情况下,Libre Office 因某些我不知道的原因而使工作簿的大小膨胀。我想知道 Libre Office 是否对所有 Excel 工作簿都这样做,还是只是该工作簿中的某些内容导致这种情况。

涉及的软件:

  • Microsoft Office Excel 2010
  • Libre Office 3.5.x(具体版本未知)
  • Dropbox(仅用于同步更改)

涉及平台:

  • Windows 上的 Office(我想这方面很明显是大师级的。。)
  • Mac OS 10.6 上的 Libre Office

此工作簿中存储的数据类型:

  • 文本
  • 整数
  • 1 列,其中包含一个简单的公式,跨越整个工作表,代表特定行(=CONCATENATE(A2285,B2285,D2285)、=CONCATENATE(A2286,B2286,D2286) 等)
  • 总共 3,500 多行

这是一张详细描述的照片,但我也会继续解释这张照片:

  • 此屏幕截图来自 .xlsx 工作簿的 Dropbox 历史记录。
  • 版本 61 - 68 是 Office Excel。
  • 版本 69 - 73 为 Libre Office。

Drobox 文件历史记录。

答案1

抓住Open XML SDK 2.0并运行“Open XML Productivity Tool for Microsoft Office”。这是一个简洁的应用程序,可让您对 .xlsx 或 .docx 中的 XML 数据执行多项分析,并且通过使用其比较工具在 XML 级别比较两个文档的内容,您应该可以轻松查看膨胀的位置。

有几种可能性:

  • LibreOffice 可能会插入 Office 视为“隐含”或包含在“普通”模板中的附加数据(字体/单元格样式、格式信息等)。
  • LibreOffice 可能没有压缩数据。如果您不知道的话,Office 使用无损压缩(类似于 ZIP)来压缩其 Open XML 格式的所有数据。我以为 LibreOffice 应该支持这一点,但也许用户正在运行的版本的压缩存在问题。如果您在运行比较工具时没有看到数据中的显著差异,则最有可能的情况是这种情况。
  • LibreOffice 可能会重新解析数据,创建自己的内部结构,并以最适合其内部文档表示的方式保存数据(使用单独的例程),这可能比 Office 本身的效率低。如果这是真的,那么这更多的是一个设计问题,表明 LibreOffice 的本机功能与 Office 的功能和技术存在根本差异。

您可以轻松排除第二种可能性(压缩问题),如下所示:

  • 取出~220K Office 版本,在 LibreOffice 中打开它,在单个单元格中添加一个字符,然后保存它。
  • 安装7-Zip如果你还没有的话。
  • 在 7-zip 中打开 LibreOffice 保存的 .xlsx 和 Excel 保存的 .xlsx。
  • 浏览档案的目录层次结构并找到文件(不是目录)。
  • 比较“尺寸”和“包装尺寸”。如果尺寸LibreOffice 的保存文件要大得多,那么 LibreOffice 本身就会使数据膨胀。如果尺寸几乎相同,但包装尺寸并不比大小小很多,则表示未使用压缩,或者压缩效果不好。在我的 PC 上,Microsoft Excel 2010 将 _rels.rels 文件从 588 字节压缩到 245 字节,将 xl\styles.xml 文件从 3037 字节压缩到 878 字节。

您可以轻松排除第一个问题,如下所示:

  • 取出~220K Office 版本,在 LibreOffice 中打开它,在单个单元格中添加一个字符,然后保存它。
  • 运行生产力工具并比较 XML。
  • 如果文档除了包含单个字符更改的非常小的区域外几乎完全相同,则第一个问题(插入额外数据)可能不适用。

如果您已经排除了第一个和第二个问题,那么我认为唯一剩下的可能性就是第三个问题,这个问题不太容易解决,可能意味着 LibreOffice“效率低下”。

要真正解决问题,我要做的第一件事就是测试 LibreOffice 的更新版本。尝试他们的测试版/候选版本/任何可用的版本。在不同的平台上尝试,例如在 Windows 或 Linux 上。看看你是否能找到一个比其他版本或平台更高效的版本或平台。一般来说,新版本(甚至是预发布版本)比旧版本更有可能解决你的问题。

答案2

我不知道为什么会出现这种膨胀,但我会提供一个解释,你可以自己验证。

所有.xlsx(或者,就此而言,.docx.pptx文件都是压缩文件。如果您将.xlsx文件重命名为.zip并打开它(或解压缩它),您会发现其中有多个文件和文件夹。

从您的屏幕截图来看,LibreOffice 在创建文件时似乎并没有真正压缩数据。您可以通过将 Excel 中的一个版本和 LibreOffice 中的一个版本重命名为.zip,解压缩它们并查看单个文件和文件夹来轻松验证这一点。未压缩的大小很可能在大小上匹配。

您也可以在 LibreOffice 的问答网站上提问http://ask.libreoffice.org

相关内容