我在矩阵'UserID'中有一个ID列表。我想创建一个xls或csv文件,该UserID是其标题行。行数是:2200000,列数是11.列的标签是1996年 - 2006年。我读了这页:
但是这段代码给了我错误。虽然有时行数较少,但有时却没有回答。有人会介绍一个可以执行此操作的程序吗? (使用matlab甚至是c#代码)
我写这段代码:
data=zeros(2200000,11);
data_cells=num2cell(data);
col_header={'1996','1997','1998','1999','2000','2001','2002','2003','2004','2005','2006'};
row_header(1:2200000,1)=UserID;
output_matrix=[{' '} col_header; row_header data_cells];
xlswrite('My_file.xls',output_matrix);
我收到此错误:
指定的数据范围无效或太大而无法写入指定的文件格式。尝试写入XLSX文件并使用Excel A1表示法作为范围参数,例如,'A1:D4'。
答案 0 :(得分:0)
当您使用xlswrite
时,您受限于Excel version permits的行数:
阵列A的最大大小取决于相关的Excel版本。
在Excel 2013中,最大值为1048576,比您的2200000x11矩阵少1151424行。
您最好使用csvwrite
导出数据,并参阅其中的提示:
csvwrite不接受输入矩阵M的单元格数组。要导出仅包含数字数据的单元格数组,请在调用csvwrite之前使用
cell2mat
将单元格数组转换为数字矩阵。要导出具有混合字母和数字数据的单元格数组......您必须使用low-level export functions来编写数据。
修改强>
在您的情况下,您应至少更改代码的这一部分:
col_header = 1996:2006;
output_matrix=[0, col_header; row_header data];
并且您不需要将output_matrix
定义为单元格数组(并且不需要data_dells
)。但是,您可能还必须将UserID
转换为数字变量。