Распечатать и изменить размер рисунка MATLAB в Excel - PullRequest
2 голосов
/ 28 июня 2011

У меня есть две цифры в MATLAB с ручками hFig1 и hFig2.Я хотел бы напечатать их в определенные ячейки в Excel (ячейки E3 и I3) и изменить их форму на [2in x 3in].

Я пытался использовать обработчик объекта .AddPictures и использовать print -dmeta, но я не могу найти способ достичь всех трех своих целей.

Я также пишу данные, чтобы преуспеть в одно и то же время, и поскольку отправляется много строк данных, я надеялсяесть метод, который не требует постоянного вызова Excel с ActiveXServer.

У кого-нибудь есть хороший метод или ресурс для решения этой проблемы?

1 Ответ

3 голосов
/ 09 ноября 2011

Вы можете добавить фигуры MATLAB в Excel проще всего так:

% Create some arbitrary graphics
f1 = figure; peaks; f2 = figure; membrane;

% Connect to Excel, make it visible and add a worksheet
xl = actxserver('Excel.Application'); set(xl,'Visible',1);
xl.Workbooks.Add(1); xls = xl.ActiveSheet;

% Paste in the MATLAB figures
print(f1, '-dbitmap'); xls.Range('E3').PasteSpecial;
print(f2, '-dbitmap'); xls.Range('I3').PasteSpecial;

Я не совсем уверен, что вы имеете в виду, делая изображения 2 на 3 дюйма. Это размер на экране? В каком разрешении? Или это размер при печати?

Вы можете указать размер и положение изображения в точках напрямую:

xls.Shapes.Item(1).PictureFormat.CropLeft  = 30;
xls.Shapes.Item(1).PictureFormat.CropRight  = 30;
xls.Shapes.Item(1).Height  = 200;
xls.Shapes.Item(1).Left = xls.Range('E3').Left;

Но если вы хотите использовать его в дюймах, вам потребуется способ пересчета в точки, в зависимости от способа отображения.

Вы упоминаете, что постоянно вызываете Excel с actxserver; Вы подключаетесь снова и снова каждый раз, когда пишете каждый фрагмент данных? Вероятно, вам не нужно этого делать - скорее всего, вы можете оставить одно соединение открытым и записать в него каждый фрагмент данных, а затем сохранить файл и закрыть соединение.

Хорошим справочным ресурсом для объектной модели Excel является документация Microsoft . Это не легко читать, хотя:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...