从MATLAB中写入特定的Excel单元格
通过MATLAB将数据写入Excel电子表格时,我希望避免在现有单元格上写入数据 我需要使用MATLAB将1X2的实验结果数组保存到Excel中。每次运行脚本时,MATLAB都会将结果覆盖到Excel中的单元格A1。我需要阻止这种情况发生,让MATLAB在Excel中找到下一个空闲行并写入它 我的方法是首先读取电子表格并将其存储为数组。计算数组的大小,计算出下一个空闲单元并写入以避免覆盖。然而,我似乎找不到如何从MATLAB编写特定的单元格 关于如何写入特定单元格或使用简单代码避免完全覆盖,有什么建议吗 示例代码:从MATLAB中写入特定的Excel单元格,excel,matlab,Excel,Matlab,通过MATLAB将数据写入Excel电子表格时,我希望避免在现有单元格上写入数据 我需要使用MATLAB将1X2的实验结果数组保存到Excel中。每次运行脚本时,MATLAB都会将结果覆盖到Excel中的单元格A1。我需要阻止这种情况发生,让MATLAB在Excel中找到下一个空闲行并写入它 我的方法是首先读取电子表格并将其存储为数组。计算数组的大小,计算出下一个空闲单元并写入以避免覆盖。然而,我似乎找不到如何从MATLAB编写特定的单元格 关于如何写入特定单元格或使用简单代码避免完全覆盖,有什
num = xlsread('var_data.xlsx');
row_no = size(num,1);
xlswrite('var_data.xlsx',var_dat,'**ideally row_no**')
代码
%%// Filenames
temp_csvfile = 'temp1.txt';
final_excelfile = 'final_data.xls';
for k = 1:4 %// No. of steps
%// Generate data to be written to CSV/Excel files (random data for now)
a1 = num2cell(20.*rand(1,2));
%%// Temporarily store data into a CSV file
fid = fopen(temp_csvfile,'a');
fprintf(fid, '%f,%f\n',a1{:} );
fclose(fid);
%%// Verify the CSV file contents
type(temp_csvfile)
end
%%// Final stage of storing into excel file
fid = fopen(temp_csvfile,'r');
all_data = textscan(fid, '%f,%f');
fclose(fid);
xlswrite(final_excelfile,num2cell(cell2mat(all_data)))
输出(增长行)
这可能会有帮助
fname='Book1.xlsx';
sname='Sheet1';
startingColumn='A'; %change if you want a different column
newData=[10 11]; %this is for test only
[~,~,Data]=xlsread(fname,sname); %read in the old data, text and all
nextRow=size(Data,1)+1; %get the row number of the end
range=sprintf('%s%d',startingColumn,nextRow); %this tells excel where to stick it
xlswrite(fname,newData,sname,range) % write the new data after the old data
如果需要,您可以在没有excel的情况下执行此操作。使用matlab保存和加载命令,并连接数据。代码片段如下所示
load oldDataFile %mat file containging variable oldData
oldData=[oldData;newData]; %update the data record
save oldDataFile oldData %save the concatenated record
要求不够明确,你能用一个例子解释一下吗?@Divakar我需要用MATLAB将一个1X2的实验结果数组保存到Excel中。每次运行脚本时,MATLAB都会将结果覆盖到Excel中的单元格A1。我需要阻止这种情况发生,让MATLAB在Excel中找到下一个空闲行并写入它。这有意义吗?那么最终您在excel工作表中执行垂直连接,它在工作表中成为Nx2数组?“免费”是指必须有1x2个空闲单元?1X2数组在excel工作表中需要一行两个单元格,对吗?没错,但每次我在MATLAB中运行脚本时,我都需要清除所有数据,这样我就无法在MATLAB中进行串联,因此我要导出到excel。自由是指当前行下方的下一个空1X2单元格,这样连接就不会替换任何现有数据。好的,据我所知,在使用MATLAB编写excel工作表时,不可能进行附加,但如果您对CSV文件满意,这可能是可能的。太好了,我所要做的就是将文件导出到excel。不过,如果有一种方法可以写入Excel中的特定单元格,我将保留这个问题。再次感谢!没关系。您可以从csv文件写入excel工作表,如编辑的代码所示。
load oldDataFile %mat file containging variable oldData
oldData=[oldData;newData]; %update the data record
save oldDataFile oldData %save the concatenated record