tkexcel_db プログラム仕様

Excelファイルをデータベースのように操作する機能を提供するモジュールです。

tkExcelクラスを拡張し、条件に基づいてExcelシートの行を選択したり、 Pandas DataFrameにデータを変換したりする機能を提供します。 Excelシートの特定の範囲をテーブルとして扱い、行をレコード、列をフィールドとして操作します。

関連リンク: tkexcel_db.py ライブラリ ドキュメント

class tklib.tkexcel_db.tkExcelDB(path=None, mode='r', table_name=None, password=None, allow_no_password=False, tmp_file=None, OpenFile=True, CloseFile=False, try_text_file=False, data_only=True, description='', split_from=1, **args)[ソース]

ベースクラス: tkExcel

Excelファイルをデータベースのように扱うためのクラスです。

tkExcelクラスを継承し、SQLのような条件指定によるデータの検索や、 Pandas DataFrameへのデータ変換機能を提供します。 特に、特定のシートをテーブルとして扱い、行をレコード、列をフィールドとして操作します。

add_to_list(irow, itargets, labels, data_list, data_dict)[ソース]

指定された行の特定の列の値をリストと辞書に追加します。

`itargets`で指定された列インデックスに対応するセルの値を`data_list`に追加し、 `labels`に対応するキーで`data_dict`に値を追加します。

パラメータ:
  • irow -- int: 値を取得する行のインデックス(1始まり)。

  • itargets -- list[int]: 値を取得する列のインデックスのリスト(1始まり)。

  • labels -- list[str]: `data_dict`のキーとして使用されるラベルのリスト。`itargets`と対応する。

  • data_list -- list: 取得した値を追加するリスト。

  • data_dict -- dict: 取得した値をラベルをキーとして追加する辞書。

戻り値:

None

evaluate(var1_pos, operator, str1, str2, args, irow='', def_val='', is_print=False)[ソース]

2つの値と演算子に基づいて条件を評価します。

数値比較 ('==', '!=', '<', '<=', '>', '>='), 文字列比較 ('eq', 'neq'), 正規表現マッチ ('like', 'not like') をサポートします。 数値比較の場合は引数を浮動小数点数に変換しようとします。

パラメータ:
  • var1_pos -- str: 最初の変数`str1`の元々の位置情報。現在未使用だが将来的な拡張のために残されている。

  • operator -- str: 比較演算子(例: '==', '!=', '<', '>', '<=', '>=', 'eq', 'neq', 'like', 'not like')。

  • str1 -- str: 比較対象となる1つ目の値。

  • str2 -- str: 比較対象となる2つ目の値。

  • args -- list: 将来の拡張のための追加引数(現在未使用)。

  • irow -- str, optional: エラーメッセージに含める行インデックス。デフォルトは''。

  • def_val -- str, optional: 値が取得できない場合のデフォルト値。現在未使用。

  • is_print -- bool, optional: エラーメッセージを標準出力に表示するかどうか。デフォルトはFalse。

戻り値:

bool or None: 評価結果が真であればTrue、偽であればFalse。数値変換エラーが発生した場合はNone。

print_inf()[ソース]

現在のtkExcelDBオブジェクトに関する情報を標準出力に表示します。

オブジェクトのdescription、path、mode、ワークシートの数と名前、 および現在のワークシートの情報を出力します。 :returns: None

select(condition, target_labels=None, key_column_org=1, target_row_org=2, key_row_org=1, ret_type='list', is_print=False)[ソース]

指定された条件に一致するデータをExcelシートから選択し、指定された形式で返します。

まず`select_irows`を呼び出して一致する行インデックスを取得します。 その後、`target_labels`で指定された列のデータを取得し、`ret_type`に応じて リストのリスト、辞書のリスト、または関連情報を含む辞書として返します。

パラメータ:
  • condition -- str: 検索条件を表す文字列(例: 'Label1 == "value1" and Label2 < 10')。

  • target_labels -- list[str], optional: 取得する列のラベルのリスト。Noneの場合、すべての列のラベルが使用されます。デフォルトはNone。

  • key_column_org -- int, optional: ヘッダー行の開始列インデックス(1始まり)。デフォルトは1。

  • target_row_org -- int, optional: データ行の開始行インデックス(1始まり)。検索はこの行から開始されます。デフォルトは2。

  • key_row_org -- int, optional: ヘッダー行の開始行インデックス(1始まり)。デフォルトは1。

  • ret_type -- str, optional: 戻り値の形式を指定します。 'list' (リストのリスト), 'dict' (辞書のリスト), 'all' (ラベル、リスト、辞書、行インデックスを含む辞書), 'irows' (ラベルと行インデックス)。 デフォルトは'list'。

  • is_print -- bool, optional: 検索情報を標準出力に表示するかどうか。デフォルトはFalse。

戻り値:

tuple[list[str], list[list]] or tuple[list[str], list[dict]] or dict or tuple[list[str], list[int]]: `ret_type`が'list'または'dict'の場合、(ラベルのリスト, データ)。 `ret_type`が'all'の場合、{"labels": labels, "list": res, "dict": res_dict, "irows": irow_list}。 `ret_type`が'irows'の場合、(ラベルのリスト, 行インデックスのリスト)。 無効な`ret_type`が指定された場合はプログラムを終了します。

select_irows(condition, key_column_org=1, key_row_org=1, target_row_org=2, is_print=False, first_hit_only=False)[ソース]

指定された条件に一致する行のインデックスのリストを返します。

`condition`文字列を解析し、Excelシートの各行をループして条件を評価します。 AND/OR演算子を含む複雑な条件を処理できます。 `first_hit_only`がTrueの場合、最初に見つかった行のインデックスのみを返します。

パラメータ:
  • condition -- str: 検索条件を表す文字列(例: 'Label1 == "value1" and Label2 < 10')。

  • key_column_org -- int, optional: ヘッダー行の開始列インデックス(1始まり)。デフォルトは1。

  • key_row_org -- int, optional: ヘッダー行の開始行インデックス(1始まり)。デフォルトは1。

  • target_row_org -- int, optional: データ行の開始行インデックス(1始まり)。検索はこの行から開始されます。デフォルトは2。

  • is_print -- bool, optional: 検索情報を標準出力に表示するかどうか。デフォルトはFalse。

  • first_hit_only -- bool, optional: 最初に見つかった一致行のインデックスのみを返すか、全ての一致行のインデックスを返すか。デフォルトはFalse。

戻り値:

list[int] or int or None: 条件に一致する行のインデックスのリスト。`first_hit_only`がTrueで一致行が見つかった場合はその行インデックス(int)。一致行が見つからなかった場合はNone。

use_dataframe(labels, data_list)[ソース]

与えられたデータからPandas DataFrameを作成し、クラスの属性に設定します。

`labels`を列名とし、`data_list`を行データとしてDataFrameを構築します。 作成されたDataFrameは`self.dataframe`に格納され、同時に返されます。

パラメータ:
  • labels -- list[str]: DataFrameの列名となる文字列のリスト。

  • data_list -- list[list]: DataFrameの行データとなるリストのリスト。

戻り値:

pandas.DataFrame: 作成されたPandas DataFrame。