トップページに戻る

Excel関連プログラム


Excel => python 移植支援プログラム

機能: Excelのcellに変数名を定義し、数式のcell名を変数名に、関数等をpythonの関数に置換し、poython式をファイルに出力する

xlsx2python.py (2024/3/15版): download source code (2024/2/12版 download)

Update info 2024/3/15版

使用方法:

xlsx2python.pyには下記の基本機能があります

  1. cellに変数名を定義する (const)
  2. その他、文字列の置換を定義する (var_name=value)
  3. cell番号を指定して、数式中のcellや文字列を置換して出力する (cell_number>var_name)
    この場合、validate用の関数 (デフォルトではprint()) もtemp.pyに出力する。
  4. 以上の出力のうち、pythonプログラムについては、temp.pyへ追加出力する
  5. temp.pyへの出力時、@indentで設定した数の空白インデントを出力する
  6. 任意の1行文字列をtemp.pyへ出力する (w)
  7. 指定したファイルの内容をtemp.pyへ追加する (import)
  8. temp.pyを実行 (run)
  9. 入力コマンドをinput.logに保存。
    3つ目の起動時引数に入力コマンドファイルを渡か、readsコマンドを使うことで自動実行できる
  10. コマンドヘルプを表示 (help)

実行方法:
> python xlsx2python.py Excelファイル名 (シート番号)  (入力コマンドファイル名)
シート番号: Excelのシート番号。0から始まる


実行例:

サンプルファイル: sample.xlsx

xlsx2python.pyを実行
> python xlsx2python.py sample.xlsx

D:\>python xlsx2python.py sample.xlsx
Read Excel file from [sample.xlsx]
Read parameters from [sample.in]
Open [temp.py] to append
>

### とりあえず、使いそうなpython モジュールを読み込む文をtemp.pyに書き込む
>w from numpy import exp, log, log10, sin, cos, tan, sqrt, power
from numpy import exp, log, log10, sin, cos, tan, sqrt, power
>

# 空行を書き込む
>w

>

### 定数をcellから読み込んで定義
### b2 cellから変数名を抽出し、c2 cellの値を定義。python文には、b2 cellの変数名以外の部分とa2 cellをコメントとして追加
>const b2 c2 a2
# b2=c2 (=1.602*0.0000000000000000001)
e = 1.602*0.0000000000000000001 # [C] elementary charge
# set C2 = e
>const b3 c3 a3
# b3=c3 (300)
T = 300 # [K] temperature
# set C3 = T
### b4 cellから変数名を抽出し、c4 cellの値を定義。python文には、b4 cellの変数名以外の部分、d4 cellとa4セルの内容をコメントとして追加
>const b4 c4 d4 a4
# b4=c4 (=29980000000)
c = 29980000000 # cm/svelocity of light
# set C4 = c
>

### 変数をsample.inに保存

>save
Save parameters to [sample.in]
Parameters:
C2 = e
C3 = T
C4 = c
>

### この次点でのtemp.py
from numpy import exp, log, sin, cos, tan, sqrt, power

# b2=c2 (=1.602*0.0000000000000000001)
e = 1.602*0.0000000000000000001 # [C] elementary charge
# b3=c3 (300)
T = 300 # [K] temperature
# b4=c4 (=29980000000)
c = 29980000000 # [cm/s] cm/svelocity of light

### ためしにrunしてみる
>run
Run [python temp.py]
>
### エラーが出ないので、ここまではOK

### 計算式を変換していく
### E3セルには N の値が入っているので、変数名Nで変換 (定数なので、実際には変換されない)

>e3>N
# E3: =16
N = 16
print(f"N = {N} (N3: None)")
# set N3 = N
>
### F3セルには log(N) [=LOG(E3)] の式が入っているので、python式に変換し、変数名log_Nで定義
>f3>log_N
# F3: =LOG(E3)
log_N = log10(E3)
print(f"log_N = {log_N} (F3: 16)")
# set log_N = F3
>
### G3セルには e*log(N)*sin(log(N)) [=$C$2*F3*SIN(F3)] の式が入っているので、python式に変換し、変数名resultで定義
>g3>result
# G3: =$C$2*F3*SIN(F3)
result = e*F3*sin(F3)
print(f"result = {result} (G3: -7.379537812758954e-19)")
# set result = G3
>

### ここまでの変数を保存
>save
Save parameters to [sample.in]
Parameters:
C2 = e
C3 = T
C4 = c
F3 = log_N
G3 = result
E3 = N

### この時点でのtemp.inの内容
C2=e
C3=T
C4=c
E3=N
F3=log_N
G3=result

### この時点でのtemp.pyの内容
from numpy import exp, log, log10, sin, cos, tan, sqrt, power

# b2=c2 (=1.602*0.0000000000000000001)
e = 1.602*0.0000000000000000001 # [C] elementary charge
# b3=c3 (300)
T = 300 # [K] temperature
# b4=c4 (=29980000000)
c = 29980000000 # cm/svelocity of light
# E3: 1e+16
N = 1e+16
print(f"N = {N} (E3: 1e+16)")
# F3: =LOG(E3)
log_N = log10(N)
print(f"log_N = {log_N} (F3: 16)")
# G3: =$C$2*F3*SIN(F3)
result = e*log_N * sin(log_N)
print(f"result = {result} (G3: -7.379537812758954e-19)")

### runしてみる
>run
Run [python temp.py]
N = 1e+16 (E3: 1e+16)
log_N = 16.0 (F3: 16)
result = -7.379537812758954e-19 (G3: -7.379537812758954e-19)
### ()内には、Excelのcellから読み込んだ値が表示されているので、計算値と()内の値が一致していればOK
>

その他の機能:

helpあるいは?コマンドで表示
>?

@indent=number_of_spaces: set the number of indent spaces. default: 0 
@use_validate=[0|1]: Use validate function() instead of print() function
const var_name_cell value_cell commnet_cells: print python eq for constant definition and set parameter 
cell_number [> var_name]: cell_number is like A1. read the cell and convert. assign to var_name if given 
open: open script file (is opened at the start) 
close: close script file 
w str: write str to script file 
var=val: set val to var for replacement 
del var: delete parameter var 
save: save parameters to [sample.in] 
show: show parameters 
read execl_path isheet: read sheet isheet from excel_path 
delf path: delete file 'path' 
import path: read commands from file 'path' and run them 
reads path: read commands from file 'path' 
run command: run 'command' 
help: show this help 
quit|exit: exit from this program
>