在使用xlswrite函数进行excel大量数据写入的时候总是会遇到一些问题,目前遇到最常见的就是写入范围无效或数据量过大的错误。
在进行程序测试的时候发现是由于当excel列数超过26列后,其排列方式变为AA,AB,AC,AD……
这样让我想利用ASCII码进行列递加循环的时候又遇到了一些困难,索性在这个基础上结合所需要的一些参数,写出如下函数:
函数主要作用是为了把数据写入,最后返回值是start_和end_,是为了将这个函数嵌套进一个循环来进行下一个26列的写入。
其中:change_1 = [65,65,49] >>> char(change_1) = AA1
function [ start_,end_ ] = parameter_write( start_, end_, change_1, change_2, save_path, txt, num, change_bit )
% 针对列数超出26的数据写入函数
% start_, end_, 计数标识 格式:double
% change_1, change_2, 初始输入表格的位置 格式:[]
% save_path, 保存路径 格式:‘ ’
% txt, num, 读取出来的原始数据 格式:cell
% change_bit 需要改变的 change_1 & change_2 位置 格式:double
% 使用的变量名:
% h i B C X Y
% start_ end_ change_1 change_2 save_path
tic
h = waitbar(0, '参数写入中……');
i = 1;
fprintf('%d 到 %d 列数据输入中\n',start_,end_);
for cnt = start_:1:end_
B = txt(:,cnt);
C = num(:,cnt);
X = char(change_1);
Y = char(change_2);
xlswrite(save_path,B,'data',X);
xlswrite(save_path,C,'data',Y);
change_1(change_bit) = change_1(change_bit) + 1;
change_2(change_bit) = change_2(change_bit) + 1;
% computations take place here
waitbar(i / 26)
i = i + 1;
end
close(h);
toc
start_ = start_ + 26;
end_ = end_ + 26;
end