2011-08-02 20 views
4

jsonファイルをOpenOfficeまたはExcelのいずれかで開くことができるxmlまたはcsvファイルに変換できるツールはありますか?jsonファイルをxmlまたはcsvに変換してOppenOffice/MS Excelで開く

私はWebアプリケーションで作業しており、MongoDBをバックエンドとして使用しています。 MongoDBからjsonとしてデータをエクスポートし、データをある形式で変換する必要があります。この形式は、いくつかの表計算ソフトで開くことができます。私はこのデータをクライアントに渡す必要がありますまた、それを渡す前にスライスとサイコロとそれを飾る。必要なデータを.csv形式と.xls形式でエクスポートする機能を実装する予定ですが、現在はすばやい解決策が必要です。

私も同じことをやり直す必要があり、私の日を救った何か(簡単なスクリプト)が見つかりました。スクリプトを再度見つけることができません、どんな助けも非常に高く評価されるでしょう。

更新:まだ解決策を探していて、問題を解決できる簡単なルビースクリプトを作成しようとしていました。誰もここにレールのどの宝石がハッシュと配列にto_xmlを追加するか知っていますか?

答えて

1

私はレールコンソール内のコードを次のようにXMLにJSONを変換しようとした:

arr = [] 
File.readlines("some_name.json").each {|l| arr << JSON.parse(l)} 
File.open("some_name.xml", "w").write(arr.to_xml) 

しかし、JSONは、その中の「$」を持ついくつかのキーを持っていた、とExcelは、XMLファイルを開くことを拒否しました。だから私は、コンソールでこれを再び試してみました:

class Array 
    def sanitize_for_xml 
    self.each{|entry| entry.sanitize_for_xml if entry.respond_to?(:sanitize_for_xml)} 
    self 
    end 
end 

class Hash 
    def sanitize_for_xml 
    self.each do |key, value| 
     self[key] = value.sanitize_for_xml if value.respond_to?(:sanitize_for_xml) 
    end 

    self.keys.each do |key| 
     self[key.gsub(/\W/, "")] = self.delete(key) 
    end 
    self 
    end 
end 

arr = [] 
File.readlines("galgotias.2010-08-02.json").each {|l| arr << JSON.parse(l)} 
arr.sanitize_for_xml 
File.open("galgotias.2010-08-02.xml", "w").write(arr.to_xml) 

そして、それはきちんとエクセルではなかったと私はそれをスライスし、ダイシング多くの時間を費やしたものの、Excelで生成されたXMLを開くことができました。

+0

私はJquery-TokenInputに問題があります。このリンクをチェックして、解決策を教えてください。もし可能なら、私は..http://stackoverflow.com/questions/13558856/what-should-be-the-correct-response from-web-service-to-jquery-token – Xavier

0

データがシンプル/フラットの場合は、Quests Toad for Cloud Databases(無料)またはJaspersofts iReportsを使用してMongoDBインスタンス/クラスタに直接接続し、抽出を生成できます。複数のネスティングレベルがある場合は、去年のように既存のおもちゃが欠けている可能性が高いと判断し、何かをハッキングしてストップギャップにします。 This EE answer of mineはPerlベースですが、DojoベースのグリッドとしてJSONファイルを表示したり、XLSまたはXLSXに変換したりして、複数のレベルのネストに対処するため、いくつかのアイデアを提供します。

+0

私はmongodbドキュメントに複数のサブドキュメントを持っていました。それらの配列の中には配列もあります。あなたが言った "Perlベースの"ものを共有できますか? – rubish

+0

私はリンクが投稿にあったと確信しています(「アイデア」という言葉には、以前のバージョンの投稿には間違いありません)とにかく「フォロー」という言葉にリンクが追加されましたが、EEサイトそれは突然再び消えるかもしれません。 – arober11

+0

@ arober11この投稿の[更新履歴](http://stackoverflow.com/posts/13540327/revisions)を表示して間違っていることを確認できます。これはこの投稿の最初の編集です。それはあなたが投稿したリンクのあなたの著者を開示するという要件に沿っているように今編集しています。 –

関連する問題