【问题标题】:Write to specific Excel cell from MATLAB从 MATLAB 写入特定的 Excel 单元格
【发布时间】:2014-03-11 18:32:02
【问题描述】:

通过 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**')

【问题讨论】:

  • 要求不够明确,能否举例说明一下?
  • @Divakar 我需要使用 MATLAB 将 1X2 的实验结果数组保存到 Excel 中。每次我运行脚本时,MATLAB 都会将结果覆盖到 Excel 中的单元格 A1。我需要阻止这种情况发生,并让 MATLAB 在 Excel 中找到下一个空闲行并写入它。这有意义吗?
  • 所以最终你在 excel 工作表中进行垂直连接,它在工作表中变成了 Nx2 数组?免费是指必须有 1x2 个免费单元格? 1X2 数组需要在 Excel 工作表中包含一行两个单元格吗?
  • 没错,但是每次我在 MATLAB 中运行我的脚本时,我都需要清除所有数据,因此我无法在 MATLAB 中进行连接,因此我要导出到 Excel。免费是指当前行下方的下一个空的 1X2 单元格,这样连接就不会替换任何现有数据。
  • 好的,据我所知,在使用 MATLAB 写入 excel 工作表时无法进行附加,但如果您对 CSV 文件没问题,这可能是可能的。

标签: excel matlab


【解决方案1】:

这可能会有所帮助。

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

【讨论】:

    【解决方案2】:

    代码

    %%// 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)))
    

    输出(不断增长的行)

    12.982309,14.634448
    
    12.982309,14.634448
    12.954919,9.018474
    
    12.982309,14.634448
    12.954919,9.018474
    10.940178,5.926416
    
    12.982309,14.634448
    12.954919,9.018474
    10.940178,5.926416
    14.893856,3.779100
    

    【讨论】:

    • 太好了,我所要做的就是将文件导出到 Excel。我会留下这个问题,因为有一种方法可以写入 Excel 中的特定单元格。再次感谢!
    • 没关系。您可以从 csv 文件写入 excel 表,如编辑后的代码所示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多