MATLABでのExcelの読み書き

MATLAB 2019b
Guide or Appdesigner
Excelの読み書きのMathWorks推奨方法を教えて下さい。
xlswriteが非推奨ということなので、readcell, writecellなどを使いましたが、エラーが起こります。
(他のアプリケーションが開いているか権限が無いという内容です)
タスクマネージャーで事前にkillする、pauseを入れるなどしてみましたが、処理出来るとき・出来ないときがあります
(ex. system('taskkill /F /IM EXCEL.EXE'); pause(5))
コミュニティを見ると非常に多くの方が同じ様なエラーに苦しんでいる様ですが、このやり方なら完全解決というものが見当たりません。
Excelはビジネスシーンで必須のツールと言っても良いと思うので、そのコントロールが上手く行かなとMATLABをアプリケーション開発に使い続けることが難しくなってしまうので、是非MathWorksとしての、公式な、推奨方法をご教授頂きたいです。
よろしくお願いします。

Answers (2)

Hernia Baby
Hernia Baby on 18 Jan 2022

1 vote

個人的には データインポートツール がオススメです。
GUI操作で読み込み方を決められるうえ、操作を関数にすることもできます。
最近では Youtube でも紹介されてましたね。
出力についてですが、
エクセルのマクロと連携させて出力する場合は一度 tmp.xlsx を作って出力するのもありです。
データ別のインポート&エクスポートの対応表は こちら です。

1 Comment

Hide
Hide on 19 Jan 2022
早速のご回答ありがとうございます。
読み込みファイルが多数の場合、データインポートツールで生成した関数を使うようにしたいと思います。
Youtube動画のご紹介もありがとうございます。
エラーは主に出力時に発生しているのですが、マクロとの連携はしていないです。
フォーマットとなるExcelファイルをコピーしそれに対して書き込みをしています。
その場合でもtmp.xlsxを作ることが有効になるのか試してみます。
対応表もありがとうございます。

Sign in to comment.

Toshinobu Shintai
Toshinobu Shintai on 18 Jan 2022

1 vote

コマンドで行いたい場合は「readmatrix」「writematrix」を推奨します。

5 Comments

Hide
Hide on 19 Jan 2022
ご回答ありがとうございます。
readmatrix, writematrixをご推奨ということでreadcellからリプレイスしてみましたが、
書き込みをしたい変数がcell配列のためエラーとなってしまいました。
cell2matで変換したら良いかと思いましたが以下の様なエラーが出ました。
Error using cat
Dimensions of arrays being concatenated are not consistent.
readcellとreadmatrixは取り扱いたい変数が行列かセル配列かで使い分けると思っていたのですが、readmatrixの方が安定して動作するということならなんとかreadmatrixで取り扱える状態にしたいです。
Toshinobu Shintai
Toshinobu Shintai on 19 Jan 2022
変数がcell配列の場合、writecellで問題ありません。
エラーについては、現状では私の方では分かりかねます。申し訳ありません。
Hide
Hide on 19 Jan 2022
追記ありがとうございます。
ではwritecellを使うことにします。
とんでもございません。アドバイスありがとうございます。
Hernia Baby
Hernia Baby on 19 Jan 2022
エラー内容を見るにcell内でベクトル化してる部分がある気がします。 cell2matをかけるとそこでエラーが出るのではないでしょうか? cellfun関数でlengthをとり、1より大きいものがいたら、その子が悪さをしてます
Hide
Hide on 19 Jan 2022
ありがとうございます。
はい。仰る通りです。cell2matでエラーが出ます。
対策分かりました。ありがとうございます。

Sign in to comment.

Products

Release

R2019b

Asked:

on 18 Jan 2022

Commented:

on 19 Jan 2022

Community Treasure Hunt

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

Start Hunting!