[C++] 57 Pythonスクリプトを使ってExcelを操作する / for文

[M1 Mac, Big Sur 11.6.5, Python 3.10.4]

前回の続きです。

for文はワンライナーで書けば、PyRun_SimpleString()に使えます。バックスラッシュを入れてもOKです。

リスト内包表記のワンライナーは多用していましたが、if文やfor文の中身をカンマでつなぐとワンライナーになるというのは知りませんでした。

#include </Library/Frameworks/Python.framework/Versions/3.10/include/python3.10/Python.h>
#include <iostream>
#include <string.h>

using std::string;

int main() {
    Py_Initialize();

    PyRun_SimpleString("import openpyxl");
    PyRun_SimpleString("wb = openpyxl.load_workbook('test.xlsx')");
    PyRun_SimpleString("ws = wb.worksheets[0]");

    PyRun_SimpleString("color_name = []");
    PyRun_SimpleString("color_code = []");

    string str = "for cell in ws['A']: color_name.append(cell.value), color_code.append(cell.fill.fgColor.rgb)";

    // バックスラッシュを使う場合
    // string str = "for cell in ws['A']: \
    //     color_name.append(cell.value), color_code.append(cell.fill.fgColor.rgb)";

    PyRun_SimpleString(str.c_str());
        
    PyRun_SimpleString("print(color_name)");
    PyRun_SimpleString("print(color_code)");

    Py_Finalize();
    return 0;
}