我有一个这种格式的txt文件:
Right,28772.163,39356.163,1,Speaker1
sp,39356.163,49499.163,99,Speaker1
sp,129129.21,147210.21,99,Speaker2
Next step is,147210.21,160881.21,1,Speaker2
surgery's,160881.21,181608.21,1,Speaker2
它继续(它有1016行)。我想将其转换为excel文件。我尝试了以下
fileID = fopen('test_datum.txt');
C = textscan(fileID,'%s %f32 %f32 %d8 %s');
但它将数据插入1016X5单元格。我想稍后将此单元格写入excel文件 谢谢
答案 0 :(得分:1)
textscan
函数有时可能很难处理。数据格式很难定义,并且倾向于将数据塞入单元格向量(将结果重新排序为单个单元格矩阵有点烦人)。我建议您使用readtable function代替:
T = readtable('data.txt')
Var1 Var2 Var3 Var4 Var5
______________ _________ _________ ____ __________
'Right' 28772.163 39356.163 1 'Speaker1'
'sp' 39356.163 49499.163 99 'Speaker1'
'sp' 129129.21 147210.21 99 'Speaker2'
'Next step is' 147210.21 160881.21 1 'Speaker2'
'surgery's' 160881.21 181608.21 1 'Speaker2'
如果您的Matlab版本大于或等于R2016b
,您可以先在该文件上运行detectImportOptions function。可以根据您的需要调整扫描结果(您可以更改变量名称,变量类型,缺失值的默认值等):
opts = detectImportOptions('data.txt');
% the previous values where char, double, double, double, char
opts.VariableTypes = {'char' 'single' 'single' 'int8' 'char'};
% alternatively, this can be used:
% opts = setvartype(opts,{'char' 'single' 'single' 'int8' 'char'})
T = readtable('data.txt',opts)
Var1 Var2 Var3 Var4 Var5
______________ ________ ________ ____ __________
'Right' 28772.16 39356.16 1 'Speaker1'
'sp' 39356.16 49499.16 99 'Speaker1'
'sp' 129129.2 147210.2 99 'Speaker2'
'Next step is' 147210.2 160881.2 1 'Speaker2'
'surgery's' 160881.2 181608.2 1 'Speaker2'
最重要的是,表格很容易导出到Excel文件。您所要做的就是使用writetable function并使用适当的设置。
答案 1 :(得分:1)
这是一种替代的,更简单的方法,让MATLAB函数自动处理更多的数据处理:
% read the file into a table
T = readtable('test_datum.txt');
% convert the table to a cell array
C = table2cell(T);
% write the cell array to an Excel file
xlswrite('output.xlsx', C);