使用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-腐败; 字符集=二进制