0

次の形式に従うコンテンツ管理サイトからの JSON ダンプがあります。

[
    {
        id: "obj1",
        children: [...]
    },

    {
        id: "obj2",
        children: [...]
    }

]

2 ~ 4 のネスティング レベルがあります。

これを Microsoft Excel XLS に変換して、Excel を使用できる顧客がデータを操作できるように、ネストされたレベルが何らかの方法で処理されるようにする最善の方法は何でしょうか?

この特定のデータを使用してこれを行う 1 つの方法は、最上位のフォルダー (ネスト レベル) ごとに新しいシートを作成することです。すべてのシートには、その特定のフォルダー内の JSON オブジェクトから選択された同じ列名が含まれます。

JSON を Excel にインポートする既製のツールはありますか?

できればコマンドライン ツールとして、スクリプトが必要な場合は Python で。

4

3 に答える 3

2

それはあなたのデータに依存します。

ネスティングが繰り返しなしで発生する場合、最も簡単なオプションは、すべてを複製するか、空白を見つけた場所で繰り返しを想定できるほどデータが完全である場合は空白のままにすることです。

これは、CSV としての XLS が次のようになることを意味します。

Element1 Element1.1 Element1.1.1 ...
Element1 Element1.1 Element1.1.2 ...
Element2 Element2.1 Element2.1.1 ...

各要素は、左側の要素の子です。親は、子がそれぞれ何回出現するかを乗算した回数だけ繰り返されることがわかります。

2 つの列を持つ非常に単純なテーブルを作成することもできます。

**Parent**    **Child**
Element1      Element1.1
Element1.1    Element1.1.1  
Element1.1    Element1.1.2
Element2      Element2.1
Element2.1    Element2.1.1
...

要素が何であるかは、粒度によって異なります。key=value のペアを文字列としてグループ化するか、複数のフィールドを 1 つにグループ化して正規表現で解析するか、すべてを分離してキーを要素と見なし、値を別の要素と見なすことができます。

最後に、規則性がある場合は、より興味深いアプローチを取ることができます。繰り返しフィールド名があると仮定します。その場合、前のアプローチのいずれかを使用できますが、フィールド名を使用してリストの代わりにマトリックスを生成します。最初の例は、暗黙の序数ヘッダーを既に持っているタプル リストであることは明らかなので、自明です。

**Parent**    **Child (default)** **Repeating key1** **Repeating key2**
e1            e1.1
e1.1          e1.1.1
e.1.1.1                           something          
e.1.1         e.1.1.2
e.1.1.2                                               somethingelse

したがって、基本的に最終的にはスパース行列になります。

XLS で複数のシートを使用して 3 次元の行列を格納する非常に興味深い方法がありますが、人間の可読性が低下する可能性があります。それはあなたが使用しているデータに要約され、一般的な解決策はありません

于 2013-01-04T19:12:21.240 に答える
1

PHP-スプレッドシートエンジンが必要だと思い ます..

クエリのリンクは次のとおりです。

これがあなたを助けることを願っています.. :)

私はあなたがこれを求めていると思います..

            $excel = new SimpleExcel('csv');                    // instantiate new object (will automatically construct the parser & writer type as CSV)

           $excel->writer->setData(
               $array // this is array generated from json
            );                                                  // add some data to the writer
            $excel->writer->setDelimiter(";");                  // (optional) if delimiter not set, by default comma (",") will be used instead
            $excel->writer->saveFile('example');                
于 2013-01-04T17:21:18.100 に答える