gpt4 book ai didi

ruby-on-rails - 将 Ruby on Rails HTML 表导出到 .xls 文件

转载 作者:行者123 更新时间:2023-12-04 21:37:06 25 4
gpt4 key购买 nike

我有下表:

<tr>
<th colspan = "18"> student info</th>
<th colspan="10">class info</th>

</tr>


<tr>
<th colspan="1">First Name</th>
<th colspan="1">Middle Name</th>
<th colspan="1">Last Name</th>

....
</tr>

<tr>
<td colspan="1"><%= link_to student.first_name,:controller => 'acme_modificationss' , :action=>'profile', :id => student.id %></td>
<td colspan="1"><%= student.middle_name %></td>
<td colspan="1"><%= student.last_name %></td>
<td colspan="1"><%= student.first_name %></td>
<td colspan="1"><%=m_first_name%></td>

.....

我需要将同一个表导出到 .xls 文件。所以我向 Controller 添加了一个新 Action :
    def document_xls
....
respond_to do |format|
format.xls

end

end

然后我添加了 document_xls View :
<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<Worksheet ss:Name="Sheet1">
<Table>
<Row>
<Cell><Data ss:Type="String">Student Info</Data></Cell>
<Cell><Data ss:Type="String">Class info</Data></Cell>
....
</Row>
<Row>
<Cell><Data ss:Type="String">First Name</Data></Cell>
<Cell><Data ss:Type="String">Middle Name</Data></Cell>
<Cell><Data ss:Type="String">Last Name</Data></Cell>
...

这将生成一个文件类型为文件的文件。但我想将此文件生成为 .xls,因此我尝试将其添加到我的 Controller 操作中:
  format.xls{ send_data @students, :type => 'application/vnd.ms-excel', :filename => 'students.xls' }

但我得到了这个错误:

NoMethodError (undefined method `bytesize' for #)



另外,我需要将 excel 表头合并到多个单元格中,有没有办法做到这一点?

最佳答案

解决此问题的一种更简单的方法是将内容作为 HTML 发送到 Excel。 Excel 可以自己解析和转换,你只需要发送正确的标题。首先,让你的表在局部 View 中,然后,在你的 Controller 中创建一个这样的方法:

  def export
headers['Content-Type'] = "application/vnd.ms-excel"
headers['Content-Disposition'] = 'attachment; filename="report.xls"'
headers['Cache-Control'] = ''
@data = self.send params[:type]
render layout: false
end

3 第一行导出 excel 文件,因此,下一行将接收数据的类型方法发送到 html 和 excel View 中检索数据的方法的名称,并 render: false 向您显示一个空布局,只是加载您的数据。

在您的 route
get 'excel/stats/:type', to: 'stats#export', as: 'excel_stat'

在此示例中,我们有具有许多不同类型统计信息的 stats Controller ,并且在 Controller 的“导出” View 中,您可以像这样渲染局部 View

导出.html.haml:
= render params[:type]

关于ruby-on-rails - 将 Ruby on Rails HTML 表导出到 .xls 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33970237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com