Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从MATLAB中写入特定的Excel单元格_Excel_Matlab - Fatal编程技术网

从MATLAB中写入特定的Excel单元格

从MATLAB中写入特定的Excel单元格,excel,matlab,Excel,Matlab,通过MATLAB将数据写入Excel电子表格时,我希望避免在现有单元格上写入数据 我需要使用MATLAB将1X2的实验结果数组保存到Excel中。每次运行脚本时,MATLAB都会将结果覆盖到Excel中的单元格A1。我需要阻止这种情况发生,让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