xlsx compactado por rubyzip não legível pelo Excel

Estou trabalhando na escrita de código que pode ler / gravar arquivos xlsx do Excel. Os arquivos xlsx são simplesmente arquivos zip de vários arquivos xml; portanto, para testar se eu poderia escrever um arquivo, usei uma gema chamadarubyzip para descompactar o arquivo xlsx e, imediatamente, compactá-lo novamente em um novo arquivo morto, sem modificar os dados. Quando faço isso, no entanto, não consigo abrir o novo arquivo do Excel, diz-se que ele está corrompid

or outro lado, se eu usar o Archive Utility do Mac OS X (o aplicativo nativo para lidar com arquivos zip) e descompactar e compactar novamente um arquivo do Excel, os dados não estão corrompidos e posso abrir o arquivo resultante no Exce

Descobri que não é a funcionalidade 'descompactar' derubyzip que "corrompe" os dados, mas o processo zip. De fato, quando uso o Archive Utility no novo arquivo zip querubyzip cria, o arquivo é novamente legível pelo Excel

Estou me perguntando por que isso acontece e que soluções podem existir para compactar o conteúdo programaticamente de uma maneira que seja legível pelo Exce

Meu código para fechar:

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

questionAnswers(1)

yourAnswerToTheQuestion