我正在編寫可以讀取/寫入Excel xlsx文件的代碼。 xlsx文件只是幾個xml文件的zip存檔文件,所以爲了測試我是否可以編寫文件,我使用了一個名爲rubyzip
的gem來解壓縮xlsx文件,然後立即將其壓縮回新的存檔文件,而不修改數據。但是,當我這樣做時,我無法打開新的excel文件,據說它已損壞。另外,如果我使用Mac OS X的存檔實用程序(原生應用程序來處理zip文件),並且我解壓並重新壓縮excel文件,則數據不會損壞,並且我可以在Excel中打開生成的文件。xlsx由rubyzip壓縮,Excel不可讀
我發現它不是'破壞'數據,而是壓縮過程的'解壓'功能rubyzip
。 (事實上,當我在rubyzip
創建的新zip文件上使用Archive Utility時,Excel可以再次讀取該文件)。
我想知道爲什麼會發生這種情況,以及有什麼解決方案可以通過Excel以可讀的方式編程壓縮內容。
我對代碼的壓縮和解:
def compress(path)
path.sub!(%r[/$],'')
archive = File.join(path,File.basename(path))+'.zip'
FileUtils.rm archive, :force=>true
Zip::ZipFile.open(archive, 'w') do |zipfile|
Dir["#{path}/**/**"].reject{|f|f==archive}.each do |file|
temp = file
zipfile.add(file.sub(path+'/',''),file)
end
end
end
爲什麼要在這裏重新發明輪子? [XLSX寶石](http://rubygems.org/gems/xlsx)你忘記了我認爲的序列化。 – 2011-05-27 20:10:59