Excelファイルの内容をテーブルに格納する方法に関して
いつもお世話になっております。
リモートサーバ上に配置したExcelファイルの内容を、Kompiraコンソール上のテーブルに格納する方法に関して質問があります。
Excelファイルは/tmp以下に配置しています。
Excelファイルの内容は以下です。

格納したいテーブルは以下です。

例えば、Excelファイルの2行目の情報を、情報格納用のジョブフローを実行したのちにテーブル内に書き込みたいと考えています。
openpyxlを使用してExcelファイルの情報を出力することはできましたが、ジョブフローを用いて、Excelファイルの情報をテーブルに書き込むことはできますでしょうか?
ご教示いただけますと幸いです。
よろしくお願いいたします。
-
正式なコメント
ジョブフロー上からKompiraのオブジェクトを新規作成するには、ディレクトリやテーブルオブジェクトの add メソッドを利用します。(詳細はマニュアルの5.3.2.ディレクトリや5.3.11.テーブルをご参照ください)
たとえば、以下のようなジョブフローになります。
[data = {
'ホスト名': 'server1',
'IPアドレス': '192.168.1.1',
'ポート番号': 22,
'接続種別': 'ssh'
}] ->
[./some_dir.add: "server1", ./サーバ情報, data=data](実行するジョブフローと同じディレクトリに「サーバ情報」型オブジェクトと、some_dir というディレクトリがある想定です。また「サーバ情報」型オブジェクトのフィールド定義は、それぞれ、ホスト名、IPアドレス、ポート番号、接続種別、という名前の想定です。)
このように、ディレクトリの add メソッドにパラメータとして、作成するオブジェクト名、型オブジェクト、作成するデータの辞書を渡してやることで、オブジェクトを作成することが可能です。
以下は、CSVデータを読み込んで、オブジェクトを作成するサンプルですが、こちらも参考になるかもしれません。
コメントアクション -
ご回答ありがとうございました。
現時点で行いたいことは、ライブラリでExcelファイルの情報を抜き出して、ジョブフローを実行した後に上記のdata = {}に格納することです。現在、data ={}内に値を渡すことができていません。
ジョブフローを実行し、Excelファイルの情報を同一ジョブ内でdata = {}に値を渡すことに失敗してしまいます。(a~hまでの値の出力はできています)

例えば、画像内のように./example_libraryのexample関数でa~hまでの情報を取得し、その値をdata内に引き渡したいです。(このジョブフローはエラーになっています)
どのように値を渡せばよいかおわかりでしたらご教授いただきたいです。
よろしくお願いいたします。
-
example_library.example 関数の中で取得した値を return してやって、ジョブフロー側では $RESULT でその値を取得すれば、期待する結果が得られるかと思います。
具体的には、
example_library.example:
def example_library(file_path, sheet_name):
... # file_path の sheet_name の所定のセルの値を読み込む処理
# 読みだした値を辞書データとして返す
return {
a: e,
b: f,
c: g,
d: h
}呼び出し側のジョブフロー:
[./example_library.example: "/tmp/test.xlsm", "Sheet1"] ->
[data = $RESULT] ->
[./test.add: "server_info", ./example型, data=data] -
度々申し訳ございません。
先日ご回答いただいた内容に関連して再度お尋ねしたいことがございます。
以下の箇所を実行したところ、新規オブジェクトを作成することには成功しました。
[./test.add: "server_info", ./example型, data=data]
以下は以前お送りいただいたものです。
[data = {
'ホスト名': 'server1',
'IPアドレス': '192.168.1.1',
'ポート番号': 22,
'接続種別': 'ssh'
}] ->
[./: "サーバ情報テーブル", ./サーバ情報, data=data]仮に上記を実行したとすると、サーバ情報テーブルに値が追加されるのではなく新たにオブジェクトが作成されてしまいます。

新規にオブジェクトを作成するのではなく、新規にテーブルを作成することや新規に作成したテーブルにジョブフローから値を追加していくことはできますでしょうか?
例えば、ジョブフローを実行した後に、上記のようなサーバ情報テーブルを作成したいです。また、サーバ情報を追加する必要がある場合にはその都度ジョブフローから行を追加していきたいです。
ご教授いただければ幸いです。
よろしくお願いいたします。
-
addメソッドを使うことで、ジョブフローから新規にテーブルを作成することも、作成したテーブルにデータを追加することも可能です。
サーバ情報型のテーブルを作成するには、以下のようにします。
[./.add: "サーバ情報テーブル", /system/types/Table, data={"typeObject": ./サーバ情報}]ここでは、ジョブフローと同じ.ディレクトリに「サーバ情報テーブル」というテーブルを作成する想定です。テーブルの各レコードの型は、ジョブフローと同じディレクトリにある「サーバ情報」型を想定しています。
作成したテーブルにデータを追加する場合は、
[./サーバ情報テーブル.add: data={"ホスト名": "server1", ..省略..}]のようにすると、データが追加されます。
サインインしてコメントを残してください。

コメント
9件のコメント