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 では、Excel の次の設定プロパティがサポートされています。

リーダープロパティ (Excel)

Excel 形式では、入力データの読み込みの指示を提供するプロパティを使用できます。

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

header

Boolean

true

Excel テーブルにヘッダーを含めるかどうかを示します。有効な値は、​true​ または ​false​ です。

ignoreEmptyLine

Boolean

true

空の行を無視するかどうかを示します。有効な値は、​true​ または ​false​ です。

streaming

Boolean

false

Mule 4.2.2 で導入済み: ストリーミングの目的は、大きなファイルを処理することです。ストリーミングを有効にすると、リーダーは一度にすべてのデータを使用可能にするのではなく、各行に順次アクセスして一度に 1 行ずつメモリ内に保存します。ストリーミングでは、ファイルの行にランダムアクセスできません。エントリを順次アクセスする場合のみ使用します。有効な値は、​true​ または ​false​ です。

tableOffset

String

null

テーブルの最初のセルの位置 (​<Column><Row> example A1​)。

zipBombCheck

Boolean

true

false​ に設定すると、zip 爆弾チェックがオフになります。有効な値は、​true​ または ​false​ です。

ライタープロパティ (Excel)

Excel 形式では、出力データの書き込みの指示を提供するプロパティを使用できます。

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

bufferSize

Number

8192

ライターバッファのサイズ。

deferred

Boolean

false

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

header

Boolean

true

Excel テーブルにヘッダーを含めるかどうかを示します。有効な値は、​true​ または ​false​ です。ヘッダーがない場合、列名が使用されます (例: A、B、C など)。

ignoreEmptyLine

Boolean

true

空の行を無視するかどうかを示します。有効な値は、​true​ または ​false​ です。

tableOffset

String

null

テーブルの最初のセルの位置 (​<Column><Row> example A1​)。

zipBombCheck

Boolean

true

false​ に設定すると、zip 爆弾チェックがオフになります。有効な値は、​true​ または ​false​ です。

サポートされる MIME タイプ (Excel)

DataWeave では、次の MIME タイプがサポートされています。

MIME タイプ

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

application/xlsx