MATLAB で Excel ファイルの読み込み、書き込みの処理を高速に処理を行うことはできませんか?
47 views (last 30 days)
Show older comments
MathWorks Support Team
on 12 Jul 2017
Edited: MathWorks Support Team
on 10 May 2023
ループ処理の中で xlsread 関数や xlswrite 関数を繰り返し呼び出して、Excel ファイルのデータ読み込み、書き込みを行っています。これらの関数を実行するごとに、Excel のプロセスがオープン/クローズしているようですが、効率的に高速に処理を行う方法を教えてください。
Accepted Answer
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 にて公開されているプログラムについてのお問い合わせは、プログラム作成者の方に直接お問い合わせください。
0 Comments
More Answers (0)
See Also
Categories
Find more on スプレッドシート in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!