QA@IT

HAML で XML 宣言を出力してくれない

2400 PV

CSV だとエンコーディングの問題が面倒なので http://railscasts.com/episodes/362-exporting-csv-and-excel?language=ja&view=asciicast を参考にして xls の出力をしてみようと思ったのですが、 haml-4.0.2 を使って !!! XML を付けているのに XML 宣言を出力してくれません。
XML 宣言がないと Excel で開いても最初のセルにすべての内容が入ってしまって、意図したスプレッドシートにならなくて困っています。
どうすればちゃんと XML 宣言付きで出力できるのでしょうか?

% cat index.xls.haml
!!! XML
%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") ID
        %Cell
          %Data(ss:Type="String") Name
        %Cell
          %Data(ss:Type="String") Release Date
        %Cell
          %Data(ss:Type="String") Price
% bundle exec haml index.xls.haml
<Workbook xmlns:html='http://www.w3.org/TR/REC-html40' xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:ss='urn:schemas-microsoft-com:office:spreadsheet' xmlns:x='urn:schemas-microsoft-com:office:excel' xmlns='urn:schemas-microsoft-com:office:spreadsheet'>
  <Worksheet ss:Name='Sheet1'>
    <Table>
      <Row>
        <Cell>
          <Data ss:Type='String'>ID</Data>
        </Cell>
        <Cell>
          <Data ss:Type='String'>Name</Data>
        </Cell>
        <Cell>
          <Data ss:Type='String'>Release Date</Data>
        </Cell>
        <Cell>
          <Data ss:Type='String'>Price</Data>
        </Cell>
      </Row>
    </Table>
  </Worksheet>
</Workbook>

回答

ドキュメントを読むと不要に見えるのですが、 --format xhtml が必要みたいです。

編集 履歴 (1)
  • 付くようになりました。ありがとうございます。
    rails 上でも config/initializers/haml.rb あたりで「Haml::Template.options[:format] = :xhtml」を設定すると付きました。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。