csvファイルに追加で書き込む
168 views (last 30 days)
Show older comments
既にある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 Comments
Accepted Answer
Kojiro Saito
on 14 Feb 2020
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 Comments
More Answers (0)
See Also
Categories
Find more on スプレッドシート in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!