MATLAB Answers

MATLAB で Excel ファイルの読み込み、​書き込みの処理を高速​に処理を行うことはで​きませんか?

207 views (last 30 days)
ループ処理の中で xlsread 関数や xlswrite 関数を繰り返し呼び出して、Excel ファイルのデータ読み込み、書き込みを行っています。これらの関数を実行するごとに、Excel のプロセスがオープン/クローズしているようですが、効率的に高速に処理を行う方法を教えてください。

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 25 Mar 2020
Edited: MathWorks Support Team on 25 Mar 2020
R2015a 以前の xlsread/xlswrite 関数では、1回の呼び出しごとに Excel のプロセスをオープンし、クローズする、という処理が含まれているため、繰り返し実行する場合には、それがボトルネックとなる場合があります。
xlsread や xlswrite 関数を用いた繰り返し実行において、処理を高速化する方法として、以下の方法が考えられます。
1. R2015b 以降のバージョンを使用する方法
R2015b 以降では、 同じスプレッドシートを繰り返し読み書きする場合のパフォーマンスが大幅に 向上されました。
2. readtable, writetable 関数を使用する方法
MATLAB R2013b 以降では、テーブル型のデータに対するファイル I/O 関数として readtable, および writetable 関数が提供されており、高速化できる可能性があります。
詳細については、それぞれの関数リファレンス、および、以下の URL より利用例をご覧ください。
・Excel ファイルへの日付インポートとエクスポート
3. ActiveX での処理をユーザ側で記述する方法
ActiveX 機能を利用したプログラミングを行うことで、処理内容に合わせ、必要な処理だけを実装することになり、時間の短縮を期待できます。
ActiveX を用いたコーディングについては、下記 URL をご参照ください。
・MATLAB: ActiveX を使用した Excel スプレッドシートへのデータの書き込み
なお、呼び出すメソッドについては、Microsoft Excel側の API であるため、 細かなAPI の使用法やAPIの種類等は、Microsoft 社の外部サイトなどをご参照ください。
その他、ユーザコミュニティである MATLAB Central/File Exchange において、xlswrite 関数の高速化を図ったコードがいくつか紹介されています。
・MATLAB Central: File Exchange
ただし、MATLAB Central にて公開されているプログラムについてのお問い合わせは、プログラム作成者の方に直接お問い合わせください。

  0 Comments

Sign in to comment.

More Answers (0)

Sign in to answer this question.