使用Spreadsheet gem创build的文件被标记为病毒

我一直在使用电子表格gem创buildxls文件,并在我的应用程序中使用rubyzip gem进行压缩。

下面是我的lib类生成xls文件的代码片段

excel_file = Spreadsheet::Workbook.new sheet1 = excel_file.create_worksheet :name => 'Attendance' .#code .#code for xls .#code excel_file.write("/home/Code/attn/files/excel/TEST-#{@name}-#{t}.xls") 

我在控制器中像这样压缩文件

  files = Dir.glob("#{Rails.root}/files/excel/*.xls") @original_file = File.basename(files.first) @original_path = "#{Rails.root}/files/excel" Zip:: File.open(@filename, Zip::File::CREATE) do |z| z.add(@original_file,@original_path+'/'+@original_file) z.get_output_stream("Other details.txt") { |os| os.write "This is a system generated excel sheet" } end send_file @filename, :type => 'application/zip', :filename => "Attendance-#{city}-#{t}.zip", :stream=> false, :x_sendfile=>true 

当我通过Ubuntu桌面下载zip文件并使用LibreOffice读取xls文件时,这种方法效果很好。 压缩提取正确没有任何问题和xls表被读取没有任何警告腐败。

但是,当我用Windows 7下载相同的压缩文件,并使用文件资源pipe理器解压缩时,用MS Excel打开xls文件“错误0x80070057:参数不正确”错误popup。

当xls表格通过gmail或hotmail上传时,它被标记为病毒。

注意: – 这只发生在Spreadsheet gem创build的大小超过140kB的xls文件中

生产和本地环境生成的文件都有这个问题。

环境:-

生产

 Ubuntu 14.04 server rvm 1.26.11 Ruby 2.2.2 

发展

 Ubuntu 14.04 rvm 1.26.11 Ruby 2.1.6 

使用的gem版本: –

生产

 rubyzip (1.1.7) spreadsheet (1.0.7) rubygems-bundler (1.4.4) ruby-ole (1.2.11.8) 

发展

 rubyzip (1.1.7) spreadsheet (1.0.7) rubygems-update (2.4.8) ruby-ole (1.2.11.8) 

生成的xls文件的MIMEtypes是

应用/ CDFV2-腐败; 字符集=二进制