Excel 形式

MIME タイプ: application/xlsx

ID: excel

Excel ワークブックは一連のシートです。DataWeave では、これはオブジェクトにマップされ、各シートがキーになります。Excel シートごとに 1 つのテーブルのみが許可されます。 テーブルは行の配列として表現されます。行はオブジェクトであり、そのキーが列、値がセルのコンテンツになります。

.xlsx​ ファイルのみがサポートされます (Excel 2007)。 .xls​ ファイルは Mule ではサポートされません。

Excel 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。

  • メモリ内

  • ストリーミング

DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​「DataWeave 解析戦略」​を参照してください。

Excel 型のマッピング

次の表に、Excel と DataWeave の型のマッピングを示します。

Excel 型 DataWeave 型

String

String

Numeric

Number

Boolean

Boolean

Data

Date

次の例は、Excel 形式の使用方法を示しています。

例: Excel を DataWeave (dw) 形式で表す

次の例は、DataWeave で Excel ワークブックを表す方法を示しています。

入力

Excel ワークブック (​Sheet1​) は、DataWeave ソースの入力ペイロードとして機能します。

Sheet1:
.   | A    | B
1   | Id   | Name
2   | 123  | George
3   | 456  | Lucas

ソース

この DataWeave スクリプトは、Excel 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。

%dw 2.0
output application/dw
---
payload

出力

DataWeave 出力は次のようになります。他のオブジェクトの値を選択するときと同じ方法で値を選択できます。

{
    "Sheet1": [
        {
                "A": 123,
                "B": "George"
        },
        {
                "A": 456,
                "B": "Lucas"
        }
    ]
}

例: Excel テーブルを出力する

次の DataWeave スクリプトは、ヘッダーと項目が含まれる Excel テーブルを出力します。

この DataWeave スクリプトの本文は、Excel シートのコンテンツを定義する DataWeave オブジェクトです。シートの名前 ​Sheet1​ は、このオブジェクトのキーになります。値は、オブジェクトの配列になります。配列の各オブジェクトには、キー-値ペアのコレクションが含まれます。各ペアのキーは、スプレッドシートのヘッダー値として処理されます。各ペアの値は、シートの行のデータ値として処理されます。

この出力ディレクティブは、出力が Excel 形式と MIME タイプであることを示しています。​header=true​ 設定は、出力にヘッダー値が含まれていることを示します。

%dw 2.0
output application/xlsx header=true
---
{
  Sheet1: [
    {
      Id: 123,
      Name: George
    },
    {
      Id: 456,
      Name: Lucas
    }
  ]
}

他の例については、​「Excel (XLSX) ファイルのデータの参照」​を参照してください。

例: Excel 入力をストリーミングする

デフォルトでは、Excel リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体から入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、​streaming​ プロパティを ​true​ に設定することで、リーダーのパフォーマンスを向上できます。

Mule アプリケーションの次の設定 XML では、Excel ファイルをストリーミングして JSON に変換します。

<http:listener-config
    name="HTTP_Listener_config"
    doc:name="HTTP Listener config" >
  <http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<flow name="streaming_flow" >
  <http:listener
    doc:name="Listener"
    config-ref="HTTP_Listener_config"
    path="/"
    outputMimeType="application/xlsx; streaming=true"/>
  <ee:transform doc:name="Transform Message" >
    <ee:message >
      <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload."Sheet Name" map ((row) -> {
    foo: row.a,
    bar: row.b
})]]></ee:set-payload>
    </ee:message>
  </ee:transform>
</flow>

この例の説明:

  • outputMimeType="application/xlsx; streaming=true"​ を設定して、XLSX 入力をストリーミングするように HTTP リスナーを設定します。 Studio UI では、リスナーの ​[MIME Type (MIME タイプ)]​ を ​application/xlsx​ に設定し、MIME タイプの ​[Parameters (パラメーター)]​ を ​[Key (キー)]​ ​streaming​ と ​[Value (値)]​ ​true​ に設定できます。

  • Transform Message​ コンポーネントの DataWeave スクリプトを使用して、XLSX ペイロード (​"Sheet Name"​ という名前の XLSX シート) の各行を反復処理し、(​row.a​、​row.b​ を使用して) 行の各セルの値を選択します。​a​ および ​b​ という名前の列を想定し、それらの列の各行の値を ​foo​ および ​bar​ にそれぞれマップします。

出力

次の画像は、Excel テーブルの出力を示しています。

dataweave formats exceltable

制限事項

  • マクロは現在サポートされていません。

  • グラフは無視されます。

  • ピボットテーブルはサポートされていません。

  • 書式設定は現在サポートされていません。

Configuration のプロパティ

DataWeave では、この形式の以下の設定プロパティがサポートされています。

Reader のプロパティ

この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。

パラメーター デフォルト 説明

header

Boolean

true

出力の 1 行目にヘッダー項目名が含まれるかどうかを示します。

有効な値は、​true​ または ​false​ です。

ignoreEmptyLine

Boolean

true

デフォルトでは、空の行を無視します。

有効な値は、​true​ または ​false​ です。

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と 「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

tableLimit

String

'Unbounded'

各行の最後の列の位置。パターン ​<Column>​ (たとえば、​'A'​ や ​'AB'​)、値 ​'HeaderSize'​ (最後のヘッダーの位置を使用する)、または「Unbounded (無制限)」 (各行をコンシュームする) を受け入れます。

tableOffset

String

null

最初のセルの位置を設定します。パターン ​<Column><Row>​ (たとえば、​A1​ や ​B3​) を受け入れます。

zipBombCheck

Boolean

true

false​ に設定すると、zip 爆弾 (圧縮解除爆弾) チェックを無効にします。

有効な値は、​true​ または ​false​ です。

Writer のプロパティ

この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。

パラメーター デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

header

Boolean

true

出力の 1 行目にヘッダー項目名が含まれるかどうかを示します。

有効な値は、​true​ または ​false​ です。

ignoreEmptyLine

Boolean

true

デフォルトでは、空の行を無視します。

有効な値は、​true​ または ​false​ です。

tableOffset

String

null

最初のセルの位置を設定します。パターン ​<Column><Row>​ (たとえば、​A1​ や ​B3​) を受け入れます。

zipBombCheck

Boolean

true

false​ に設定すると、zip 爆弾 (圧縮解除爆弾) チェックを無効にします。

有効な値は、​true​ または ​false​ です。

サポートされる MIME タイプ

この形式では、次の MIME タイプがサポートされます。

MIME タイプ

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

application/xlsx