我正在尝试从Matlab导出矩阵以使用xlswrite导出。但是,我的矩阵是一个包含诸如'001','00323'之类字符串的cellarray。当它导出到Excel时,Excel会自动将它们转换回数字并将前2个零分为“1”和“323”。
有没有人知道如何强制excel接受它们作为Text从Matlab写入xlsx?
谢谢! 升。
答案 0 :(得分:4)
Excel可能喜欢这样做,因为它正是Excel在键入这些值时会执行的操作。
解决此问题的一种方法是将'"=001"'
放入单元格数组而不是'001'
,如下面的代码所示。请注意,Excel会在结果文件中正确处理值:
myCell= {1, '0001', '="0001"'};
xlswrite('test.xlsx', myCell)
如果需要,您可以编写一个小函数,用引号括住单元格数组中的所有字符串:
function aCell = fixForExcel(aCell)
for ind = 1:numel(aCell)
myVal = aCell{ind};
if isstr(myVal)
aCell{ind} = sprintf('="%s"', myVal)
end
end
end
答案 1 :(得分:0)
我使用SSN遇到了这个问题。我不知道用xlswrite创建电子表格有多少控制权。
您可以将格式设置为文本,这样可以保留前导零。
问题仍然存在,当您打开电子表格时,将消除所有前导零。您可以创建一个自定义格式,指定单元格的格式有两个前导零。您可以使用“\ 0 \ 0#”作为自定义表达式。文本格式将在第一次保存后保存。
如果您的变量数为0,那么解决这个问题的唯一方法就是将数据复制到Excel中。