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

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

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 10 May 2023
Edited: MathWorks Support Team on 10 May 2023
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 を用いたコーディングについては、下記よりヘルプドキュメントをご覧ください。
 
・Excel をオートメーション サーバーとして使用したスプレッドシート データの書き込み
 
MATLAB R2016a 以降のリリースをご利用の場合は、下記コマンドでもドキュメントをご覧いただけます。
web(fullfile(docroot, 'matlab/matlab_external/using-a-matlab-application-as-an-automation-client.html'))
なお、呼び出すメソッドについては、Microsoft Excel側の API であるため、 細かなAPI の使用法やAPIの種類等は、Microsoft 社の外部サイトなどをご参照ください。
その他、ユーザコミュニティである MATLAB Central/File Exchange において、xlswrite 関数の高速化を図ったコードがいくつか紹介されています。
・MATLAB Central: File Exchange
ただし、MATLAB Central にて公開されているプログラムについてのお問い合わせは、プログラム作成者の方に直接お問い合わせください。

More Answers (0)

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!