matlab中使用xlswrite将数据写入Excel文档的时候有时候会出现报错:
Excel returned: Error: Object returned error code: 0x800A03EC.
情况一:
这个报错的原因有多种情况:最常见的情况是用户写入Excel中的数据量超过了Excel能够容纳的容量。Excel2003的工作区间为:65,536行256列。在Excel2010中工作区间有所增加,达到了1,048,576行16,384 列。
所以在遇到这个报错的时候,
可以先尝试写入Excel文档的时候,将相关文档的名字命名为2007以上版本的扩展名(.xlsx),不用03版本的名字(.xls)。但如果数据量超过了Excel2010的容纳范围,就只能将数据拆分存到不同的Excel文件当中。
参考资料:Excel2010说明书 Excel specifications and limits
情况二:
如果Excel的表名(sheetname)中含有冒号(:)也会出现这个报错。例如使用如下语句:
xlswrite('test.xlsx',0, 'Sheet1:Sheet2', 'A1');
错误产生的原因:给xlswrite的第四行“range”引入了一个非法参数,xlswrite只支持指定范围使用Excel的“A1”。
如果确实需要对Excel中不同的sheet存储数据,可以采用循环的形式,其中num2str可以将数值型转换为字符串类型。 例如如下代码:
for i = 1:3
xlswrite('test.xls',1,['Sheet' num2str(i)],'A1');
end
情况三:
用户存入单个数据的大小超过了Excel可以接受的范围,如果你试着
在Excel单元格写一个字符串长度大于1024个字符,就会出现报错。出现这种情况也可以尝试
将相关文档的名字命名为2007以上版本的扩展名(.xlsx),不用03版本的名字(.xls)。
情况四:
如果向Excel单元格中输入的数据字段的大小为0×N,也会出现此类报错。
情况五:
如果在存储的数据当中,有以等于号“=”开头的数据,会出现此类报错。因为Excel的输入方式就是 = A1*A2。所以存储进去的同时会造成错误。
(PS:情况四和情况五来源于网络,没亲自验证。)
===============================================================================
参考资料:【MathWorks】 Why do I receive an error (error code: 0x800A03EC) when using XLSWRITE in MATLAB?