在matlab中附加到excel [英] Appending to an excel in matlab

查看:37
本文介绍了在matlab中附加到excel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在跟进

I am following up on my own question. By using:

excelWorkbook.SaveAs('figtest.xlsx'); 

I am overwriting the existing excel. I have created a function which uses the code to save two images to excel. Now I want to iterate over a number of images, process each image and then save the result alongside the original image to an excel. Obviously calling the function each iteration is a bad idea since, each iteration is deleting the results of former iterations.

How can I add the current data to the excel file without deleting any former data?

Is there a better way to do this?

Note that the data is images and not simple numeric data.

解决方案

Create a COM server once, iterate over the images and place them in the desired cells, quit the server and then delete the server object.

Building from my previous answer, here is a working example with 5 of many built-in images:

%Some sample images
im{1}=imread('peppers.png');
im{2}=imread('cameraman.tif');
im{3}=imread('pears.png');
im{4}=imread('greens.jpg');
im{5}=imread('bag.png');

excel = actxserver('Excel.Application'); % Create server object
excelWorkbook = excel.Workbooks.Add(1);  % Add a workbook
excelSheet = excel.ActiveSheet;          % Get the active sheet

f = figure('visible','off');             % To not show the images in MATLAB
dpi = get(groot, 'ScreenPixelsPerInch'); % Get screen dpi
for k=1:5
    imshow(im{k});
    print(gcf, sprintf('-r%d', dpi), ...     % Print the figure at the screen resolution
        '-clipboard', '-dbitmap');           %    to the clipboard as a bitmap
    %Adjust the cell names where you want to paste the images as desired
    excelSheet.Range(['B',num2str(k)]).PasteSpecial();
    %Unlocking aspect ratio to adjust height and width of the image according to the cell
    excelSheet.Shapes.Item(k).LockAspectRatio='msoFalse';
    excelSheet.Shapes.Item(k).Width=excelSheet.Range(['B',num2str(k)]).Width;
    excelSheet.Shapes.Item(k).Height=excelSheet.Range(['B',num2str(k)]).Height;     
end
excelWorkbook.SaveAs('figtest.xlsx');     % Save workbook to a file
excelWorkbook.Close();                    % Close workbook
excel.Quit();                             % Quit server
excel.delete();                           % Delete server object

which gives:

这篇关于在matlab中附加到excel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆