情况:
我运行宏来格式化 excel 文件,并将格式化的 excel 文件另存为 .xlsx,文件大小为 37 KB。我复制内容并将其保存到新文件中,大小为 30 KB。
问题:
我想知道根本的区别是什么,所以我尝试使用电子表格比较。没有区别。所以我将文件转换为 CSV,然后在 powershell 中运行此命令:
$file1 = import-csv -Path "C:\Users\me\Desktop\Original_File.csv"
$file2 = import-csv -Path "C:\Users\me\Desktop\New_File.csv"
Compare-Object $file1 $file2 -property MPFriendlyName -IncludeEqual
它告诉我内容上没有差异。是否有命令或其他工具可以向我解释根本差异是什么?例如 7 KB 到底是什么?
边注:
这可能听起来也很愚蠢,但是我打开了 .xlsx Visual Basics 并认为大小的差异是保存的宏,但事实并非如此,没有保存的宏。
答案1
从内容上看,它们可能是相同的。因此,您的 CSV 比较可能是可靠的。为了找出 Excel 文件之间可能存在哪些不同,您可以执行以下操作:
- 将每个 Excel 文件提取到单独的目录(xlsx 文件是包含 XML 文件的压缩档案)
- 使用 WinMerge 之类的工具来比较目录。这将突出显示确切的 XML 文件和不同的行。
答案2
电子表格的剖析
使用现有的 11KB 电子表格,我将数据复制到新电子表格中并保存,文件大小为 10KB。
我将两个 XLSX 文件打开到 NotePad++ 中,进行比较,发现立即存在差异。这些文件看起来像机器代码,但可读文本很少。我将文本从一个文件复制到另一个文件并保存。当我再次尝试在 Excel 中打开时,文件显示已损坏,无法打开。
少数可读的代码行之一是这个字符串:
worksheets/_rels/sheet1.xml.rels
通过搜索,我找到了这篇解释一切的文章: 电子表格文件的剖析
当我意识到 XLSX 文件实际上是 zip 文件时,我解压了这两个文件并比较了文件和文件结构。它们完全相同,只是在“worksheet”文件夹中多了一个“_rels”文件夹。这个“_rels”文件夹包含一个额外的“sheet1.xml.rels”文件,这解释了我 1KB 的差异。
我以为差异在于列宽或其他细微的格式变化,但我的 1KB XML 文件最终成为了打印机的架构文件……