質問: csvファイルに追加で書き込む 既にある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。 となります。 どのようにすればよいのでしょうか?
回答: 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指定ができないので、あまりメリットは無いかと思います。