string形式のファイル名の作成

8 views (last 30 days)
Koji
Koji on 3 Jul 2022
Commented: Hernia Baby on 4 Jul 2022
csv形式のファイルからデータをインポートして、処理した上でcsvファイルと同じファイル名のxlsxファイルの作成を考えております。
file = "C:\asdf.csv";
[filepath,name,ext] = fileparts(file)
としてcsvのファイル名をstring形式で取り込み
処理したデータTを
writetable(T,name.xlsx)
とすればできるのではないか考えたのですができませんでした。
良い方法があれば教えていただけないでしょうか?
  4 Comments
Atsushi Ueno
Atsushi Ueno on 3 Jul 2022
そういう事でしたか。それならこれでファイル名の拡張子だけ変更して保存する事が出来ます
file = "C:\asdf.csv";
[filepath,name,ext] = fileparts(file)
writetable(T,[filepath,name,'.xlsx']);

Sign in to comment.

Accepted Answer

Hernia Baby
Hernia Baby on 4 Jul 2022
エラー: writetable (line 152)
FILENAME は空でない文字ベクトルまたは string スカラーでなければなりません。
---------------------------------------------------
これはcatが配列の結合だからです。
string配列でなく、スカラーにするにはappendを使用してください。
file = "C:\asdf.csv";
[filepath,name,ext] = fileparts(file)
filepath = ""
name = "C:\asdf"
ext = ".csv"
以下がcatでの連結です
[filepath,name,'.xlsx']
ans = 1×3 string array
"" "C:\asdf" ".xlsx"
以下がappendでの連結です
filepath + name + '.xlsx'
ans = "C:\asdf.xlsx"
※関係ないですがMATLAB Answers上ではfilepartsがCドライブがないためか、filepathが空になるんですね。
  2 Comments
Hernia Baby
Hernia Baby on 4 Jul 2022
なるほどLinux環境が原因だったんですね…!勉強になるなあ…

Sign in to comment.

More Answers (2)

Koji
Koji on 3 Jul 2022
ありがとうございます。
file = "C:\asdf.csv";
[filepath,name,ext] = fileparts(file)
writetable(T,[filepath,name,'.xlsx']);
上記で試したところ
file、filepath、nameはstring形式でワークスペースには現れていますが
エラー: writetable (line 152)
FILENAME は空でない文字ベクトルまたは string スカラーでなければなりません。
となってしまいました。

Koji
Koji on 4 Jul 2022
お二方ご助言ありがとうございました。
str1=append(name,'.xlsx');
writetable(T,str1);
お陰様で上記で、求めたいた元々のファイル名を使ったxlsxファイルを作成することができました。
  1 Comment
Atsushi Ueno
Atsushi Ueno on 4 Jul 2022
おっとこれはすいません。間違えてstring型に文字ベクトルをくっつけてしまいました。

Sign in to comment.

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!