如何修改我的 MatLab 脚本以正确写入 Excel?
How to modify my MatLab script to correctly write to Excel?
所以我基本上在 MatLab 中有一个小脚本,我在一个更大的程序中使用它。该脚本本质上一直将数据写入 Excel 文件。
脚本跨单元格横向写入数据如下:
function writevar(x,k,filename)
col = char(64+k);
N = size(x,1);
Rg = sprintf([col '1:' col '%i' ],N);
xlswrite(filename,x,Rg)
end
在 A-Z 列之间写入数据时,该脚本可以完美运行。但是,一旦它到达 Z 列,它就会崩溃。我如何修改脚本,以便它可以继续写入超出 Z 列的 AA、AB 等(它需要一直向下到 CR)。
谢谢。
您正在正确处理 [1, 26]
范围内的 k
值。据推测,AA
列在您的输入中将是 k = 27
,因此您需要对其进行一些特殊的数学计算。这是一个片段,在一般情况下应该将 k
转换为列名:
k = k - 1; % Convert to zero-based for ease of processing
col = '';
while k ~= 0
% Prepend higher digits
col = [char(mod(k, 26) + 65) col];
k = floor(k / 26);
end
处理这个问题的一种方法(参见 BlackAdder 的评论)是
function writevar(x,k,filename)
if (k > 26) {
col = [char(64+ceil(k/26)) char(64+mod(k,26))];
else
col = [char(64+k);
end
N = size(x,1);
Rg = sprintf([col '1:' col '%i' ],N);
xlswrite(filename,x,Rg)
end
所以我基本上在 MatLab 中有一个小脚本,我在一个更大的程序中使用它。该脚本本质上一直将数据写入 Excel 文件。
脚本跨单元格横向写入数据如下:
function writevar(x,k,filename)
col = char(64+k);
N = size(x,1);
Rg = sprintf([col '1:' col '%i' ],N);
xlswrite(filename,x,Rg)
end
在 A-Z 列之间写入数据时,该脚本可以完美运行。但是,一旦它到达 Z 列,它就会崩溃。我如何修改脚本,以便它可以继续写入超出 Z 列的 AA、AB 等(它需要一直向下到 CR)。
谢谢。
您正在正确处理 [1, 26]
范围内的 k
值。据推测,AA
列在您的输入中将是 k = 27
,因此您需要对其进行一些特殊的数学计算。这是一个片段,在一般情况下应该将 k
转换为列名:
k = k - 1; % Convert to zero-based for ease of processing
col = '';
while k ~= 0
% Prepend higher digits
col = [char(mod(k, 26) + 65) col];
k = floor(k / 26);
end
处理这个问题的一种方法(参见 BlackAdder 的评论)是
function writevar(x,k,filename)
if (k > 26) {
col = [char(64+ceil(k/26)) char(64+mod(k,26))];
else
col = [char(64+k);
end
N = size(x,1);
Rg = sprintf([col '1:' col '%i' ],N);
xlswrite(filename,x,Rg)
end