PPT自动生成

% 指定图片文件夹路径
imageFolder = '...\imageResultPNG';

% 获取图片文件列表
imageFiles = dir(fullfile(imageFolder, '*.jpg')); % 假设图片格式为.jpg,可根据需要修改
imageFiles = [imageFiles; dir(fullfile(imageFolder, '*.png'))]; % 也包含.png格式的图片

% 提取文件名中的数字部分
strName= {imageFiles.name};
numFiles = numel(strName);
numbers = zeros(1, numFiles);

for i = 1:numFiles
    % 假设文件名为 "1.jpg", "2.jpg", 等
    [~, name, ~] = fileparts(strName{i});
    numbers(i) = str2double(name);
end

% 按数字排序
[~, sortedIdx] = sort(numbers);
sortedFiles = imageFiles(sortedIdx);

filename = '...\总结.pptx';  % ppt路径

% 创建PowerPoint应用程序对象
g = actxserver('powerpoint.application');
g.Visible = 1;  % 可视化
Presentation = g.Presentation;
Presentation = invoke(Presentation, 'open', filename);

slide_number = 8;

% 5. 计算需要的幻灯片数量
numSlides = ceil(length(imageFiles) / 4);
% 遍历图片文件并插入到PPT中
% 6. 遍历幻灯片
for slideIndex = 1:numSlides% 添加一个新的幻灯片
%     slide = Presentation.Slides.Add(slideIndex, 1); % 1表示空白幻灯片
    slide_count = get(Presentation.Slides, 'Count'); % 当前ppt页数
    slide_count = int32(double(slide_count)+1);  % 下一页
%     slide = invoke(Presentation.Slides,'Add',slide_count,11);  % 增加空白页 
    
    if slide_number <= slide_count - 1
        % 获取指定的幻灯片
        slide = Presentation.Slides.Item(slide_number);
    end
    % 计算当前幻灯片包含的图片索引范围
    startIndex = (slideIndex - 1) * 4 + 1;
    endIndex = min(slideIndex * 4, length(imageFiles));
    count = 0;
    % 7. 遍历当前幻灯片的图片
    for imgIndex = startIndex:endIndex
        count = count +1;

        % 计算图片的水平和垂直间距
        horizontalGap = 0;
        verticalGap = 0;
        
        % 计算图片的宽度和高度
        imgWidth = 145;
        imgHeight = 100;
        
        % 计算图片的左上角坐标
        left = 590;
        top = 80 +imgHeight* (count -1);
        
        
        
        % 获取当前图片的完整路径
        imagePath = fullfile(imageFolder, sortedFiles(imgIndex).name);
        
        % 插入图片到幻灯片中
        shape = slide.Shapes.AddPicture(imagePath, 0, 1, left, top, imgWidth, imgHeight);% 原图大小插入,x边界,y边界,宽,高
        
    end
    slide_number = slide_number+1;
end


% 保存PPT
savePath = '总结.pptx';
Presentation.SaveAs(savePath);

% 关闭演示文稿和PowerPoint应用程序
Presentation.Close();
g.Quit();
delete(g);
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值