csvファイルに追加で書き込む
85 ビュー (過去 30 日間)
古いコメントを表示
既にあるcsvファイルに場所を指定して書き込む方法がわかりません。
csvファイルのA1:C5に文字、数字が記載してあり(excelで開いたとき)、
D1から新たに追加したいと考えています。
A=[1;2;3;4;5]
dlmwrite('test.csv',A,'-append');
この場合、列ではなく行の最終に追加されてしまいます。
writematrix(A,'test.csv','Sheet',1,'Range','D1:D5')
この場合は 無効なパラメーターsheet。 となります。
どのようにすればよいのでしょうか?
0 件のコメント
採用された回答
Kojiro Saito
2020 年 2 月 14 日
dlmwriteのappendやfopen('filename', 'a')だと、ファイルの最後の行に追加になってしまいます。また、writematrixでRangeを指定できるのは、.xls、.xlsm、.xlsxのスプレッドシートファイルのみです。
D1から追加する方法として、例えば以下の2通りがあります。
%% 方法1 Aを元のCSVのtableに結合してからファイルに書き込む
t = readtable('test.csv', 'ReadVariableNames', false);
A=[1;2;3;4;5];
t2 = addvars(t, A);
writetable(t2, 'test.csv', 'WriteVariableNames', false);
%% 方法2 writematrixでRangeを指定して書き込む
m = readtable('test2.csv');
writetable(m, 'test2.xlsx', 'WriteVariableNames', false)
A=[1;2;3;4;5];
writematrix(A, 'test2.xlsx', 'Range', 'D1:D5')
m2 = readtable('test2.xlsx', 'ReadVariableNames', false);
writetable(m2, 'test2.csv', 'WriteVariableNames', false)
ただ、方法2だと.csv⇔.xlsxに変換しないとwritematrixでRange指定ができないので、あまりメリットは無いかと思います。
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で スプレッドシート についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!