📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
ページの作成:「== 概要 == PyXLLは、開発者がExcelの機能をPythonコードで拡張できるようにするExcelアドインである。<br> Pythonを生産的で柔軟なExcelワークシートのバックエンドにして、Excelのユーザインターフェイスを使用して情報インフラの他の部分とやり取りできるようにする。<br> <br> PyXLLを使用する場合、Pythonディストリビューション (Anaconda、EnthoughtのCanopy、CPytho…」 |
編集の要約なし |
||
| 7行目: | 7行目: | ||
PyXLLは独自の完全なPythonディストリビューションを実行するため、NumPy、Pandas、SciPy等の全てのサードパーティのPythonパッケージにアクセスでき、Excelからそれらを呼び出すことができる。<br> | PyXLLは独自の完全なPythonディストリビューションを実行するため、NumPy、Pandas、SciPy等の全てのサードパーティのPythonパッケージにアクセスでき、Excelからそれらを呼び出すことができる。<br> | ||
<br> | <br> | ||
PyXLLの使用例を以下に示す。<br> | |||
* 既存のPythonコードを呼び出してExcelで計算を実行する。 | * 既存のPythonコードを呼び出してExcelで計算を実行する。 | ||
* データ処理および分析 | * データ処理および分析 | ||
| 26行目: | 26行目: | ||
<br> | <br> | ||
PyXLLの機能の詳細を知りたい場合は、公式ドキュメントを参照すること。<br> | PyXLLの機能の詳細を知りたい場合は、公式ドキュメントを参照すること。<br> | ||
<br><br> | |||
== 対応バージョン == | |||
PyXLLの対応バージョン情報は以下の通りである。<br> | |||
<br> | |||
==== PyXLLバージョン ==== | |||
* 最新バージョン: PyXLL Version 5.11.2 | |||
* サポート対象: PyXLL Version 5.x系列 | |||
<br> | |||
==== Pythonバージョン ==== | |||
* Python 2.3以降 | |||
* Python 2.4以降 (デコレータ構文のサポート) | |||
* Python 3.5.1以降 (非同期関数のコルーチンシンタックスのサポート) | |||
* Python 3.14 (2026/1 最新) まで対応 | |||
<br> | |||
==== Excelバージョン ==== | |||
* Microsoft Excel for Windows 2003以降 | |||
* Office 365 | |||
* Excel 2016以降 (推奨) | |||
<br><br> | <br><br> | ||
| 68行目: | 87行目: | ||
<br> | <br> | ||
PyXLLパッケージのインストールが完了した後、PyXLL Excelアドインをダウンロードしてインストールする。<br> | PyXLLパッケージのインストールが完了した後、PyXLL Excelアドインをダウンロードしてインストールする。<br> | ||
<u>"Do you have a PyXLL license key?"</u>と尋ねられた場合、<u>"n"</u>と入力することにより、30日間の無料試用版が自動的に有効になる。<br> | <u>"Do you have a PyXLL license key?"</u> と尋ねられた場合、<u>"n"</u> と入力することにより、30日間の無料試用版が自動的に有効になる。<br> | ||
pyxll install | pyxll install | ||
<br> | <br> | ||
画面の指示に従ってインストールを完了する。<br> | 画面の指示に従ってインストールを完了する。<br> | ||
<u>"Have you already downloaded the PyXLL add-in?"</u>と尋ねられた場合は、<u>"n"</u>と入力すると、インストーラが必要なライブラリを全て自動的にダウンロードする。<br> | <u>"Have you already downloaded the PyXLL add-in?"</u> と尋ねられた場合は、<u>"n"</u> と入力すると、インストーラが必要なライブラリを全て自動的にダウンロードする。<br> | ||
<br> | <br> | ||
必要であれば、[https://www.pyxll.com/download.html PyXLLの公式Webサイト]にアクセスして、PyXLLをダウンロードしてインストールする。<br> | 必要であれば、[https://www.pyxll.com/download.html PyXLLの公式Webサイト]にアクセスして、PyXLLをダウンロードしてインストールする。<br> | ||
| 108行目: | 127行目: | ||
*: <br> | *: <br> | ||
*: 設定ファイルの[LOG]セクションでvebosity = debugと設定することにより、デバッグロギングを有効にして不具合の詳細を知ることができる。 | *: 設定ファイルの[LOG]セクションでvebosity = debugと設定することにより、デバッグロギングを有効にして不具合の詳細を知ることができる。 | ||
*: <syntaxhighlight lang="ini">[LOG] | *: <syntaxhighlight lang="ini"> | ||
verbosity = debug | [LOG] | ||
</syntaxhighlight> | verbosity = debug | ||
</syntaxhighlight> | |||
<br><br> | |||
== PyXLLの設定ファイル (pyxll.cfg) == | |||
PyXLLの動作は、インストールフォルダ内の設定ファイル (pyxll.cfg) で制御される。<br> | |||
この設定ファイルを編集することにより、Pythonの実行環境、ロードするモジュール、ログの詳細レベル等を設定できる。<br> | |||
<br> | |||
==== [PYTHON]セクション ==== | |||
[PYTHON]セクションでは、Python環境に関する設定を行う。<br> | |||
<br> | |||
* pythonpath | |||
*: Pythonモジュールを検索するパスを追加する。 | |||
*: 複数のパスを指定する場合は、改行で区切る。 | |||
*: 相対パスと絶対パスの両方を指定できる。 | |||
*: <syntaxhighlight lang="ini"> | |||
[PYTHON] | |||
pythonpath = | |||
c:\path\to\your\code | |||
.\relative\path | |||
</syntaxhighlight> | |||
*: <br> | |||
* modules | |||
*: PyXLLが読み込むPythonモジュールを指定する。 | |||
*: 複数のモジュールを指定する場合は、改行で区切る。 | |||
*: 指定されたモジュールは、Excel起動時に自動的にロードされる。 | |||
*: <syntaxhighlight lang="ini"> | |||
[PYTHON] | |||
modules = | |||
my_module | |||
excel_functions | |||
</syntaxhighlight> | |||
*: <br> | |||
* executable | |||
*: 使用するPythonインタープリタのパスを指定する。 | |||
*: 特定のPythonバージョンや仮想環境のPythonを使用する場合に設定する。 | |||
*: <syntaxhighlight lang="ini"> | |||
[PYTHON] | |||
executable = c:\Python312\python.exe | |||
</syntaxhighlight> | |||
<br> | |||
==== [LOG]セクション ==== | |||
[LOG]セクションでは、ログに関する設定を行う。<br> | |||
<br> | |||
* verbosity | |||
*: ログの詳細レベルを設定する。 | |||
*: 設定可能な値: debug, info, warning, error | |||
*: デバッグ時は debug を設定することが推奨される。 | |||
*: <syntaxhighlight lang="ini"> | |||
[LOG] | |||
verbosity = debug | |||
</syntaxhighlight> | |||
*: <br> | |||
* path | |||
*: ログファイルの出力先を指定する。 | |||
*: デフォルトでは、PyXLLインストールフォルダ内のlogsフォルダに出力される。 | |||
<br> | |||
==== 設定ファイルの例 ==== | |||
pyxll.cfgの設定例を以下に示す。<br> | |||
<br> | |||
<syntaxhighlight lang="ini"> | |||
[PYTHON] | |||
pythonpath = | |||
c:\path\to\your\code | |||
.\relative\path | |||
modules = | |||
my_module | |||
excel_functions | |||
executable = c:\Python312\python.exe | |||
[LOG] | |||
verbosity = debug | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||
| 125行目: | 218行目: | ||
<br> | <br> | ||
PyXLLの他の機能について知りたい場合は、[https://www.pyxll.com/docs/userguide/index.html 公式ドキュメントのユーザーガイド]を参照する。<br> | PyXLLの他の機能について知りたい場合は、[https://www.pyxll.com/docs/userguide/index.html 公式ドキュメントのユーザーガイド]を参照する。<br> | ||
<br><br> | |||
== PyXLLの基本的な使い方 == | |||
PyXLLでは、Pythonのデコレータを使用してExcel関数、マクロ、メニューを定義する。<br> | |||
主要なデコレータは以下の通りである。<br> | |||
<br> | |||
* <code>@xl_func</code> | |||
*: Excelのワークシート関数を定義する。 | |||
*: <br> | |||
* <code>@xl_macro</code> | |||
*: Excelのマクロを定義する。 | |||
*: <br> | |||
* <code>@xl_menu</code> | |||
*: Excelのメニューアイテムを定義する。 | |||
<br><br> | |||
== @xl_funcデコレータ == | |||
<code>@xl_func</code> デコレータは、Python関数をExcelのワークシート関数として公開するために使用する。<br> | |||
<br> | |||
==== 基本的な使い方 ==== | |||
最も簡単な使用方法は、関数に <code>@xl_func</code> デコレータを付けるだけである。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func | |||
@xl_func | |||
def hello(name): | |||
return "Hello, %s" % name | |||
</syntaxhighlight> | |||
<br> | |||
この関数は、Excelのワークシート上で <code>=hello("World")</code> のように呼び出すことができる。<br> | |||
<br> | |||
==== 型署名 (Type Signature) の使い方 ==== | |||
型署名を使用することにより、引数と戻り値の型を明示的に指定できる。<br> | |||
これにより、ExcelとPython間の型変換を制御できる。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func | |||
@xl_func("int x, float y, bool z: float") | |||
def basic_pyxll_function_2(x, y, z): | |||
if z: | |||
return x | |||
return y | |||
</syntaxhighlight> | |||
<br> | |||
型署名の書式は、<code>"<引数の型> <引数名>, ...: <戻り値の型>"</code> である。<br> | |||
<br> | |||
主な型の指定:<br> | |||
* int: 整数 | |||
* float: 浮動小数点数 | |||
* bool: 真偽値 | |||
* str: 文字列 | |||
* var: 任意の型 | |||
* numpy_array: NumPy配列 | |||
* dataframe: Pandasデータフレーム | |||
<br> | |||
==== カテゴリの指定 ==== | |||
<code>category</code> パラメータを使用することにより、Excel関数の挿入ダイアログでのカテゴリを指定できる。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func | |||
@xl_func(category="My Category") | |||
def my_function(x): | |||
return x * 2 | |||
</syntaxhighlight> | |||
<br> | |||
==== 揮発性関数 (Volatile Function) ==== | |||
<code>volatile=True</code> を指定することにより、Excelの再計算時に毎回実行される揮発性関数を定義できる。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func | |||
@xl_func(volatile=True) | |||
def current_time(): | |||
import datetime | |||
return datetime.datetime.now() | |||
</syntaxhighlight> | |||
<br> | |||
==== マクロシート関数 (Macro Sheet Function) ==== | |||
<code>macro=True</code> を指定することにより、マクロシート関数を定義できる。<br> | |||
マクロシート関数は、Excelのワークシートに対して操作を行うことができる。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func, xlcAlert | |||
@xl_func(macro=True) | |||
def show_message(message): | |||
xlcAlert(message) | |||
return "OK" | |||
</syntaxhighlight> | |||
<br><br> | |||
== @xl_macroデコレータ == | |||
<code>@xl_macro</code> デコレータは、Excelのマクロを定義するために使用する。<br> | |||
マクロは、Excelのリボンやボタンから実行できる。<br> | |||
<br> | |||
==== 基本的な使い方 ==== | |||
最も簡単な使用方法は、関数に <code>@xl_macro</code> デコレータを付けるだけである。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_macro, xlcAlert | |||
@xl_macro | |||
def popup_messagebox(): | |||
xlcAlert("Hello") | |||
</syntaxhighlight> | |||
<br> | |||
このマクロは、Excelのマクロダイアログから実行できる。<br> | |||
<br> | |||
==== ショートカットキーの設定 ==== | |||
<code>shortcut</code> パラメータを使用することにより、マクロにショートカットキーを割り当てることができる。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_macro, xlcAlert | |||
@xl_macro(shortcut="Alt+F3") | |||
def macro_with_shortcut(): | |||
xlcAlert("Shortcut pressed!") | |||
</syntaxhighlight> | |||
<br> | |||
==== マクロからワークシートを操作する ==== | |||
マクロ内では、PyXLLが提供するExcel操作関数を使用してワークシートを操作できる。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_macro, get_active_object | |||
@xl_macro | |||
def clear_range(): | |||
xl = get_active_object() | |||
xl.Range("A1:C10").Clear() | |||
</syntaxhighlight> | |||
<br><br> | |||
== @xl_menuデコレータ == | |||
<code>@xl_menu</code> デコレータは、Excelのメニューバーにカスタムメニューアイテムを追加するために使用する。<br> | |||
<br> | |||
==== 基本的な使い方 ==== | |||
最も簡単な使用方法は、メニュー名と関数に <code>@xl_menu</code> デコレータを付けるだけである。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_menu, xlcAlert | |||
@xl_menu("Hello!") | |||
def on_hello(): | |||
xlcAlert("Hello!") | |||
</syntaxhighlight> | |||
<br> | |||
このメニューアイテムは、PyXLLメニューに追加される。<br> | |||
<br> | |||
==== サブメニューの作成 ==== | |||
<code>menu</code> および <code>sub_menu</code> パラメータを使用することにより、メニューの階層を作成できる。<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_menu, xlcAlert | |||
@xl_menu("My Item", menu="Tools", sub_menu="Operations") | |||
def operation_callback(): | |||
xlcAlert("Operation executed!") | |||
</syntaxhighlight> | |||
<br> | |||
この例では、[Tools] - [Operations] - [My Item]という階層のメニューが作成される。<br> | |||
<br> | |||
==== メニューアイテムの無効化 ==== | |||
メニューアイテムを動的に無効化するには、関数が特定の値を返すように定義する。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_menu, xlcAlert | |||
@xl_menu("Conditional Menu") | |||
def conditional_menu(): | |||
# メニューが有効かどうかを判定 | |||
if some_condition(): | |||
xlcAlert("Menu executed!") | |||
else: | |||
return False # メニューを無効化 | |||
</syntaxhighlight> | |||
<br><br> | |||
== Excel連携機能 : Pandasデータフレーム == | |||
PyXLLは、Pandasデータフレームとの緊密な連携機能を提供する。<br> | |||
Excelの範囲をPandasデータフレームとして読み込んだり、データフレームをExcelに書き込んだりすることができる。<br> | |||
<br> | |||
==== データフレームを引数として受け取る ==== | |||
型署名で <code>dataframe</code> を指定することにより、Excelの範囲をPandasデータフレームとして受け取ることができる。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func | |||
import pandas as pd | |||
@xl_func | |||
def process_dataframe(df: pd.DataFrame) -> pd.DataFrame: | |||
df['new_column'] = df['value'] * 2 | |||
return df | |||
</syntaxhighlight> | |||
<br> | |||
==== データフレームのパラメータ指定 ==== | |||
型署名でデータフレームのパラメータを指定することにより、インデックスや列ヘッダの扱いを制御できる。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func | |||
@xl_func("dataframe<index=True, columns=1>: dataframe") | |||
def analyze_data(df): | |||
return df.describe() | |||
</syntaxhighlight> | |||
<br> | |||
パラメータの意味を以下に示す。<br> | |||
* <code>index=True</code> | |||
*: 最初の列をインデックスとして扱う | |||
* <code>columns=1</code> | |||
*: 最初の行を列ヘッダとして扱う | |||
<br> | |||
==== データフレームを返す ==== | |||
Python関数がPandasデータフレームを返す場合、自動的にExcelの範囲に変換される。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func | |||
import pandas as pd | |||
@xl_func("int rows, int cols: dataframe") | |||
def create_dataframe(rows, cols): | |||
data = [[i * j for j in range(cols)] for i in range(rows)] | |||
df = pd.DataFrame(data, columns=[f"Col{i}" for i in range(cols)]) | |||
return df | |||
</syntaxhighlight> | |||
<br> | |||
==== データフレームの実用例 ==== | |||
以下の例では、Excelから受け取ったデータを集計してデータフレームで返している。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func | |||
import pandas as pd | |||
@xl_func("dataframe: dataframe") | |||
def group_by_category(df): | |||
# カテゴリごとに集計 | |||
result = df.groupby('category').agg({ | |||
'value': ['sum', 'mean', 'count'] | |||
}) | |||
return result | |||
</syntaxhighlight> | |||
<br><br> | |||
== Excel連携機能 : NumPy配列 == | |||
PyXLLは、NumPy配列との連携機能を提供する。<br> | |||
Excelの範囲をNumPy配列として読み込んだり、NumPy配列をExcelに書き込んだりすることができる。<br> | |||
<br> | |||
==== NumPy配列を引数として受け取る ==== | |||
型署名で <code>numpy_array</code> を指定することにより、Excelの範囲をNumPy配列として受け取ることができる。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func | |||
import numpy as np | |||
@xl_func | |||
def matrix_multiply(a: np.ndarray, b: np.ndarray) -> np.ndarray: | |||
return np.dot(a, b) | |||
</syntaxhighlight> | |||
<br> | |||
==== NumPy配列の型指定 ==== | |||
型署名でNumPy配列の要素の型を指定することができる。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func | |||
@xl_func("numpy_array<float>: numpy_array<float>") | |||
def normalize_array(arr): | |||
import numpy as np | |||
return arr / np.sum(arr) | |||
</syntaxhighlight> | |||
<br> | |||
指定可能な型を以下に示す。<br> | |||
* <code>int</code> | |||
*: 整数 | |||
* <code>float</code> | |||
*: 浮動小数点数 | |||
* <code>bool</code> | |||
*: 真偽値 | |||
* <code>object</code> | |||
*: オブジェクト型 | |||
<br> | |||
==== NumPy配列を返す ==== | |||
Python関数がNumPy配列を返す場合、自動的にExcelの範囲に変換される。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func | |||
import numpy as np | |||
@xl_func("int rows, int cols: numpy_array<float>") | |||
def create_matrix(rows, cols): | |||
return np.random.rand(rows, cols) | |||
</syntaxhighlight> | |||
<br> | |||
==== NumPy配列の実用例 ==== | |||
以下の例では、線形回帰を行っている。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func | |||
import numpy as np | |||
@xl_func("numpy_array<float> x, numpy_array<float> y: numpy_array<float>") | |||
def linear_regression(x, y): | |||
# 線形回帰の係数を計算 | |||
coeffs = np.polyfit(x.flatten(), y.flatten(), 1) | |||
# 予測値を計算 | |||
predictions = np.polyval(coeffs, x.flatten()) | |||
return predictions.reshape(-1, 1) | |||
</syntaxhighlight> | |||
<br><br> | |||
== 高度な機能 : RTD関数 == | |||
RTD (Real-Time Data) 関数は、リアルタイムで更新されるデータをExcelに表示するための機能である。<br> | |||
株価、センサーデータ、ログデータ等のリアルタイムデータの表示に使用される。<br> | |||
<br> | |||
==== 基本的なRTD関数 ==== | |||
型署名で <code>rtd</code> を指定することにより、RTD関数を定義できる。<br> | |||
RTD関数は、ジェネレータまたは非同期ジェネレータとして定義する。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func | |||
import random | |||
import time | |||
@xl_func(": rtd") | |||
def random_numbers(): | |||
while True: | |||
yield random.random() | |||
time.sleep(5) | |||
</syntaxhighlight> | |||
<br> | |||
この関数は、5秒ごとにランダムな数値を生成してExcelセルを更新する。<br> | |||
<br> | |||
==== 非同期RTD関数 ==== | |||
非同期RTD関数を使用することにより、ブロッキングせずにリアルタイムデータを更新できる。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func | |||
import asyncio | |||
import random | |||
@xl_func(": rtd") | |||
async def async_random_numbers(): | |||
while True: | |||
yield random.random() | |||
await asyncio.sleep(5) | |||
</syntaxhighlight> | |||
<br> | |||
非同期RTD関数は、<code>await</code> を使用して非同期的に待機できる。<br> | |||
<br> | |||
==== RTD関数の実用例 ==== | |||
以下の例では、APIから株価データを取得してリアルタイムで更新している。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func | |||
import asyncio | |||
import aiohttp | |||
@xl_func("str symbol: rtd") | |||
async def stock_price(symbol): | |||
url = f"https://api.example.com/stock/{symbol}" | |||
while True: | |||
async with aiohttp.ClientSession() as session: | |||
async with session.get(url) as response: | |||
data = await response.json() | |||
yield data['price'] | |||
await asyncio.sleep(60) # 1分ごとに更新 | |||
</syntaxhighlight> | |||
<br><br> | |||
== 高度な機能 : 非同期関数 == | |||
PyXLLは、非同期関数をサポートしている。<br> | |||
非同期関数を使用することにより、ブロッキングせずにExcelから外部APIを呼び出したり、データベースにアクセスしたりできる。<br> | |||
<br> | |||
==== 基本的な非同期関数 ==== | |||
<code>async</code> キーワードを使用して非同期関数を定義する。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func | |||
import asyncio | |||
@xl_func | |||
async def async_function(): | |||
await asyncio.sleep(1) | |||
return "Done" | |||
</syntaxhighlight> | |||
<br> | |||
==== 非同期HTTPリクエスト ==== | |||
非同期関数を使用して、外部APIからデータを取得できる。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func | |||
import aiohttp | |||
@xl_func | |||
async def fetch_data(url: str) -> str: | |||
async with aiohttp.ClientSession() as session: | |||
async with session.get(url) as response: | |||
return await response.text() | |||
</syntaxhighlight> | |||
<br> | |||
==== 複数の非同期処理の並行実行 ==== | |||
<code>asyncio.gather</code> を使用して、複数の非同期処理を並行実行できる。<br> | |||
<br> | |||
<syntaxhighlight lang="python"> | |||
from pyxll import xl_func | |||
import asyncio | |||
import aiohttp | |||
@xl_func | |||
async def fetch_multiple_urls(url1: str, url2: str, url3: str) -> str: | |||
async with aiohttp.ClientSession() as session: | |||
tasks = [ | |||
session.get(url1), | |||
session.get(url2), | |||
session.get(url3) | |||
] | |||
responses = await asyncio.gather(*tasks) | |||
results = [] | |||
for response in responses: | |||
results.append(await response.text()) | |||
return ", ".join(results) | |||
</syntaxhighlight> | |||
<br><br> | |||
== 型変換の仕組み == | |||
PyXLLは、ExcelとPython間で自動的に型変換を行う。<br> | |||
型変換の仕組みを理解することにより、より効果的にPyXLLを使用できる。<br> | |||
<br> | |||
==== ExcelからPythonへの型変換 ==== | |||
Excelの値は、下表に示すPythonの型に変換される。<br> | |||
<br> | |||
<center> | |||
{| class="wikitable" | |||
|+ ExcelからPythonへの型変換 | |||
! Excelの型 !! Pythonの型 | |||
|- | |||
| 数値 || int または float | |||
|- | |||
| 文字列 || str | |||
|- | |||
| 真偽値 || bool | |||
|- | |||
| エラー値 || ExcelError | |||
|- | |||
| 空セル || None | |||
|- | |||
| 範囲 || list (1次元) または list of list (2次元) | |||
|} | |||
</center> | |||
<br> | |||
==== PythonからExcelへの型変換 ==== | |||
Pythonの値は、下表に示すExcelの型に変換される。<br> | |||
<br> | |||
<center> | |||
{| class="wikitable" | |||
|+ PythonからExcelへの型変換 | |||
! Pythonの型 !! Excelの型 | |||
|- | |||
| int, float || 数値 | |||
|- | |||
| str || 文字列 | |||
|- | |||
| bool || 真偽値 | |||
|- | |||
| None || 空セル | |||
|- | |||
| list || 1次元範囲 | |||
|- | |||
| list of list || 2次元範囲 | |||
|- | |||
| numpy.ndarray || 範囲 | |||
|- | |||
| pandas.DataFrame || 範囲 (ヘッダー付き) | |||
|} | |||
</center> | |||
<br> | |||
==== カスタム型変換 ==== | |||
カスタム型変換を定義することにより、独自の型変換ロジックを実装できる。<br> | |||
詳細は、[https://www.pyxll.com/docs/userguide/udfs/type-conversion.html 公式ドキュメントの型変換]を参照すること。<br> | |||
<br><br> | <br><br> | ||
| 135行目: | 708行目: | ||
これは、Pythonスクリプトフォルダがシステムパス上に存在しないことが原因である。<br> | これは、Pythonスクリプトフォルダがシステムパス上に存在しないことが原因である。<br> | ||
<br> | <br> | ||
この時、<code>python -m pyxll install</code> | この時、<code>python -m pyxll install</code> コマンド および <code>pyxll install</code> コマンドを実行する。<br> | ||
<br> | <br> | ||
==== Excelの起動時にpythonXXX.dll not foundエラーが発生する ==== | ==== Excelの起動時にpythonXXX.dll not foundエラーが発生する ==== | ||
使用しているPythonのバージョンが、PyXLLアドインがビルドされたPythonのバージョンと異なることが原因である。<br> | 使用しているPythonのバージョンが、PyXLLアドインがビルドされたPythonのバージョンと異なることが原因である。<br> | ||
<br> | <br> | ||
コマンドラインインストーラを使用している場合は、PyXLLをダウンロード済みかどうかを尋ねられた時に<u>"n"</u>を入力して、正しいバージョンをダウンロードする。<br> | コマンドラインインストーラを使用している場合は、PyXLLをダウンロード済みかどうかを尋ねられた時に <u>"n"</u> を入力して、正しいバージョンをダウンロードする。<br> | ||
PyXLLアドインを手動でダウンロードする場合は再度ダウンロードするが、ダウンロードフォームで正しいPythonのバージョンを選択するように注意すること。<br> | PyXLLアドインを手動でダウンロードする場合は再度ダウンロードするが、ダウンロードフォームで正しいPythonのバージョンを選択するように注意すること。<br> | ||
<br> | <br> | ||
| 146行目: | 719行目: | ||
エラーが発生した時、PyXLLのログファイル (デフォルトでは、PyXLLのインストールフォルダ下のlogsフォルダ) に書き込まれる。<br> | エラーが発生した時、PyXLLのログファイル (デフォルトでは、PyXLLのインストールフォルダ下のlogsフォルダ) に書き込まれる。<br> | ||
<br> | <br> | ||
ログファイルの場所を確認する場合は、<code>pyxll status</code>コマンドの使用、あるいは、PyXLLメニューの[About]オプションを確認する。<br> | ログファイルの場所を確認する場合は、<code>pyxll status</code> コマンドの使用、あるいは、PyXLLメニューの[About]オプションを確認する。<br> | ||
<br> | <br> | ||
または、[https://support.pyxll.com/hc/en-gb PyXLLの公式WebサイトにあるFAQ]を確認すること。<br> | または、[https://support.pyxll.com/hc/en-gb PyXLLの公式WebサイトにあるFAQ]を確認すること。<br> | ||