spreadsheet 谁再用这个插件,我要导数据,到成 excel 格式的不知到选择这个插件是否合适,本来想用 win32ole,无奈服务器是 ubuntu。
@sjzg001 如果你要用 Excel 格式的话,就用 HTML 的 table 表格,还支持 CSS。输出的 Content 强制为 Download,然后默认文件名后缀为.xlsx,直接 Excel 打开,OK!自己实现一下应该比较容易~ 我能想到就是增加一个 respond 为 Excel。
可以看看这个 railscasts http://railscasts.com/episodes/362-exporting-csv-and-excel
windows,ubuntu,mac 下都可用 在 controller 里面
#获取数据,data 可以用 ActiveRecord::Base.connect.select_all 查询出来 data = xxxx
xls_report = StringIO.new
book = Spreadsheet::Workbook.new
sheet1 = book.create_worksheet :name => "表单名"
#表头
sheet1.row(0).default_format = Spreadsheet::Format.new :color => :black, :weight => :bold, :size => 10
keys = params[:columns].keys.compact.collect{|key| key.to_i}.sort.collect{|key| key.to_s}
sheet1.row(0).concat(keys.collect{|key| params[:columns][key][:column_header]})
#写入具体数据,这个看具体应用 ,这里列是从前台 extjs 根据实际显示的 grid 的列和宽度传过来的
row_num = 1
data.each do |row|
sheet1.row(row_num).concat keys.collect{|key| row[params[:columns][key][:data_index]]}
row_num = row_num + 1
end
#调整各列的宽度
keys.each_with_index do |key,index|
sheet1.column(index).width = params[:columns][key][:column_width].to_f/10
end
book.write xls_report
send_data(xls_report.string, :filename => 'your_excel_file_name.xls', :type => 'application/vnd.ms-excel', :disposition => 'inline')
需要先明确一下你的要求范围。
Excel2007 之后采用了新的 XML 为基础的文件格式。如果只支持 2007 之后的版本的话,推荐一下 github randym/axlsx