所以到目前为止我有这个
file = fileread(filenames.txt) ;
data = textscan(file, '#:%2d \t Area:%5d \t Xp:%4d Yp:%4d \t Length:%3d B#:%2d \t R:%2d L:%2d Ch:%2d \t End 1:Xp:%4d Yp:%4d \t End 2:Xp:%4d Yp:%4d\n') ;
data = [data{1}, num2cell([data{2:end}])] ;
xlswrite('filenames.xlsx', data) ;
但是我的文本文件看起来像这样(多个文件的行数不一,这个例子有9个加上文件索引行)
File Index: 2095303
#: 1 Area: 939 Xp:-397 Yp: 586 Length: 99 B#: 2 R: 2 L: 0 Ch:-1 End 1:Xp:-450 Yp: 588 End 2:Xp:-352 Yp: 572
#: 2 Area: 1185 Xp:-287 Yp: 294 Length:145 B#: 2 R: 1 L: 1 Ch: 0 End 1:Xp:-317 Yp: 359 End 2:Xp:-235 Yp: 244
#: 3 Area: 592 Xp:-242 Yp: 486 Length: 77 B#: 3 R: 2 L: 1 Ch: 0 End 1:Xp:-278 Yp: 488 End 2:Xp:-202 Yp: 477
#: 4 Area: 818 Xp:-144 Yp: 480 Length: 60 B#: 2 R: 0 L: 2 Ch: 1 End 1:Xp:-181 Yp: 488 End 2:Xp:-135 Yp: 451
#: 5 Area: 377 Xp: -23 Yp:-443 Length: 37 B#: 1 R: 0 L: 1 Ch: 0 End 1:Xp: -42 Yp:-459 End 2:Xp: -12 Yp:-460
#: 6 Area: 923 Xp: 32 Yp:-234 Length: 67 B#: 1 R: 0 L: 0 Ch: 0 End 1:Xp: -3 Yp:-260 End 2:Xp: 60 Yp:-212
#: 7 Area: 812 Xp: 150 Yp:-148 Length: 54 B#: 1 R: 0 L: 1 Ch: 0 End 1:Xp: 136 Yp:-130 End 2:Xp: 169 Yp:-161
#: 8 Area: 5968 Xp: 428 Yp: 432 Length:402 B#: 3 R: 3 L: 0 Ch:-1 End 1:Xp: 224 Yp: 468 End 2:Xp: 622 Yp: 356
#: 9 Area: 617 Xp: 714 Yp: 13 Length: 63 B#: 1 R: 0 L: 1 Ch: 0 End 1:Xp: 687 Yp: 35 End 2:Xp: 702 Yp: -22
我认为文件索引行搞砸了我,但我也需要这些信息
答案 0 :(得分:2)
第一行肯定存在问题。 您需要单独处理它,并使用
开始第二行data = textscan(file(22:end),...)
您可能需要使用22,它可能是21,或根据不同文件中第一行的更改方式进行更改。
请注意,正如文档所述,在字符串上使用textscan
时,它始终从字符串的第一个元素开始,而不是上次在字符串上使用textscan
时停止的位置。
此外,您可能需要担心落后' \ n'在您的格式字符串中。 根据您的操作系统,您可能需要' \ r'而不是' \ n'。
最后,您很可能会发现在使用textscan
之后,数据位于向量的单元格数组中,并且需要进一步操作以放入适合使用xlswrite的格式。