[C++] 58 FLTK : xlsx変換アプリ / Pythonの openpyxlライブラリ導入

[M1 Mac, Big Sur 11.6.5, Python 3.10.4]

Excelファイルを扱うFLTKアプリの作成に着手しました。GUIはよく使うガワの使い回しです。

まずは前々回から取り組んでいるExcelファイルから列データを取り出してリストにする機能を実装しました。A列の値とセル色をリストにします。色データはRGB16進数の頭にFFが付きます。このFFはいらないのでそのうち除去するようにします。

列数や取り出すデータの種類はいずれ選択できるようにしたいです。

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

using std::string;

int XlsxToList(const char* path) {

    Py_Initialize();

    PyRun_SimpleString("import openpyxl");

    string path_str = string(path);
    string wb_str = "wb = openpyxl.load_workbook('" + path_str +"')";
    PyRun_SimpleString(wb_str.c_str());
    PyRun_SimpleString("ws = wb.worksheets[0]");

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

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

    Py_Finalize();
    return 0;
}