writetable without trailing empty line

9 次查看(过去 30 天)
Luke Hicks
Luke Hicks 2019-4-3
回答: Aditya 2024-11-21,5:07
I am trying to print a cell array to a .txt file and the formatting needs to be perfect in order to import properly into another program.
I am using r2018b which does not support writecell or using fprintf with a cell array.
My current approach is converting the cell array into a table and then using writetable to export it to a .txt file. The problem is that the .txt file has a trailing new line at the end of the document that I don't want. Is there a way to export this data without the trailing new line?
Thank you!
  1 个评论
Stakis93
Stakis93 2020-9-28
Hi,
Have you found any solution to this issue ?
I'd like to export my table (using writetable) with the exact number of rows as well, and without the last extra empty row.
Thank you !

请先登录,再进行评论。

回答(1 个)

Aditya
Aditya 2024-11-21,5:07
This is a legacy behavior that writetable has adopted from POSIX standards. Here's a post on why text files end with a newline:
A workaround would be by using low-level file IO functions. Here's a sample example on how to acheive it:
filename = 'SampleFile.txt';
cellArray = {'Name', 'Age'; 'Alice', 30; 'mark', 43,};
% Convert cell array to table
T = cell2table(cellArray(2:end,:), 'VariableNames', cellArray(1,:));
writetable(T,filename,'FileType','text','Delimiter','\t');
fid = fopen(filename, "r");
fidNew = fopen("UpdatedFile.txt", "w");
fseek(fid, -2, "eof");
pos = ftell(fid);
frewind(fid);
A = fread(fid, pos);
fwrite(fidNew, A);
fclose(fid);
fclose(fidNew);
Hope this helps!

产品

Community Treasure Hunt

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

Start Hunting!

Translated by