직장에서의 업무 자동화:Powerpoint 글머리 기호 텍스트를 Excel 시트로 가져오기

StackOverflow https://stackoverflow.com/questions/1214452

문제

저는 오늘 직장에서 많은 시간을 소비하는 특정 작업을 자동화해 달라는 요청을 받았습니다!다음은 수행해야 할 작업이며 가능하다면 제가 아는 범위 내에서 이를 수행할 수 있는 방법(구현 조언)에 대한 도움을 주시면 감사하겠습니다.

문제

나는 파워 포인트 문서(.ppt).거기에서 텍스트를 추출하고 싶습니다(텍스트는 글머리 기호 형식임).이 글머리 기호를 뛰어나다 시트에서 각 글머리 기호는 행이어야 합니다.또한 이 글머리 기호 텍스트를 가져온 페이지를 인접한 열에 넣고 싶습니다.

그래서 기본적으로:ppt에서 추출 -> Excel 시트에 각 행을 글머리 기호로 삽입합니다.

내가 사용할 수 있는 기술

펄, PHP, 자바.

나는 PHP를 선호하다 솔직히 말해서 이것이 내 기본 언어이기 때문에 여러분이 가장 좋다고 생각하는 다른 것을 고려하게 되어 기쁩니다.두 번째는 Perl이고 다음은 Java입니다.나는 단지 이것을 위해 클래스를 컴파일하고 JDK를 설치하고 싶지 않습니다!:)

주요 질문

  • 글머리 기호를 어떻게 참조하나요?
  • Excel 시트에 구조화되지 않은 텍스트만 잔뜩 남게 될 가능성이 있습니까?
  • ppt 파일을 읽는 데 장애가 있나요?

업데이트

삶이 더 편해진다면 MS 기술(VB 등)을 고려해 보겠지만 저는 사용해 본 적이 없으며 MS 기술을 경멸합니다!전도자들에게 화를 내지 않기를 바랍니다!:)

도움이 되었습니까?

해결책

다음은 사용하는 샘플 스크립트입니다 Win32 :: 올레.

그건 그렇고, 슬라이드를 처리 할 수있는 형식으로 변환 한 후에는 사용할 수 있습니다. 스프레드 시트 :: WriteExcel 비 MS 시스템에서 출력을 작성합니다. 따라서 두 가지 프로그램을 추천합니다. 하나는 PowerPoint 문서를 변환하고 다른 하나는 Excel 파일을 생성하기 위해 추천합니다.

Microsoft Office 응용 프로그램에 대한 훌륭한 정보 소스는 객체 브라우저입니다. 도구 → 매크로 → Visual Basic Editor를 통해 액세스 할 수 있습니다. 편집자에 들어가면 누르십시오 F2 Microsoft Office 응용 프로그램에서 제공하는 인터페이스, 메소드 및 속성을 찾아보십시오.

#!/usr/bin/perl

use strict;
use warnings;

use FindBin qw( $Bin );
use File::Spec::Functions qw( catfile );

use Win32::OLE;
use Win32::OLE::Const 'Microsoft PowerPoint';
$Win32::OLE::Warn = 3;

my $ppt = get_ppt();
$ppt->{Visible} = 1;

my $ppt_file = catfile $Bin, 'test.ppt';
my $doc = $ppt->Presentations->open( $ppt_file );
my $slides = $doc->Slides;
my $num_slides = $slides->Count;

for my $slide_idx (1 .. $num_slides) {
    print "=== Begin Slide $slide_idx ===\n";

    my $slide = $doc->Slides->Item( $slide_idx );
    my $shapes = $slide->Shapes;
    my $num_shapes = $shapes->Count;

    for my $shape_idx (1 .. $num_shapes) {
        my $shape = $shapes->Item($shape_idx);
        next unless $shape->HasTextFrame;

        my $pars = $shape->TextFrame->TextRange->Paragraphs;
        my $num_pars = $pars->Count;
        for my $par_idx (1 .. $num_pars) {
            my $par = $pars->Paragraphs($par_idx,1);
            print_par( $par );
        }
    }

    print "=== End Slide $slide_idx ===\n\n";
}

sub print_par {
    my ($par) = @_;
    my @bullets = qw( - * > + = @ );

    my $bullet_format = $par->ParagraphFormat->Bullet;
    my $bullet_type = $bullet_format->Type;

    my $bullet_char = '';

    if ($bullet_type == ppBulletNumbered) {
        $bullet_char = $bullet_format->Number . "\t";
    }
    elsif( $bullet_type == ppBulletUnnumbered ) {
        # Need a Unicode => ASCII mapping if you want to use
        # $bullet_format->Character
        my $indent = $par->IndentLevel % scalar @bullets;
        $bullet_char = $bullets[$indent] . "\t";
    }

    my $text = $par->Text;
    $text =~ s/\s+$//;

    print $bullet_char, $text,"\n";
}

sub get_ppt {
    my $app;
    eval {
        $app = Win32::OLE->GetActiveObject('PowerPoint.Application');
    };

    die "$@\n" if $@;

    unless($app) {
        $app = Win32::OLE->new(
            'PowerPoint.Application', sub { $_[0]->Quit }
        ) or die "Oops, cannot start PowerPoint: ",
                 Win32::OLE->LastError, "\n";
    }
    return $app;
}

다른 팁

Perl로 수행 할 수 있습니다. VBA로 할 수있는 모든 일은 Win32 :: Ole을 통해 Perl로 수행 할 수 있습니다. Win32 :: OLE 모듈을 사용하여 MS 사무실 문서와 협력하여 컨텐츠를 추출하고 생성했습니다. 그래도 한동안이었습니다. 여기서 시작, http://win32.perl.org/wiki/index.php?title=win32_perl_modules 페이지 중간에.

각 객체에 대한 VBA 문서는 참조에 유용하며, 어떤 개체가 있는지, 그리고 이용 가능한 방법과 속성을 찾는 데 유용합니다.

Puh ... Perl, PHP 또는 Java를 사용하여 MS Office 파일을 처리하는 데 어려움을 겪을 시간이 있습니다. MS Office 파일의 자동화를해야 할 때 VBA (신청을위한 Visual Basic)를 가장 자주 사용했습니다. 그것을 살펴보십시오. 많은 것들을 위해 매크로를 녹음하고 생성 된 코드를 살펴보고 상황이 어떻게 참조되는지 알아보십시오. 그런 다음 생성 된 코드를 가져 와서 자신만의 VBA 모듈 및 도구를 만듭니다. 그러한 기능이 파워 포인트의 애드 인으로 완벽하게 맞을 수 있다고 상상할 수 있습니다.

응용 프로그램을위한 Visual Basic가 귀하에게 제공되지 않습니까? 그것은 사무실에 내장되어야하며, 사무실로 가기 때문에 더 쉬울 수 있습니다.

OpenOffice.org의 프레젠테이션 앱 (인상)을 사용하여 PowerPoint 파일을 가져올 수 있습니다. 그런 다음 XML 인 OpenOffice.org 형식으로 내보낼 수 있습니다. 그런 다음 선택한 언어로 일반 텍스트 XML을 구문 분석 할 수 있어야합니다.

다른 사람들이 지적했듯이 PowerPoint 형식으로 직접 작업하려면 Microsoft 언어 (VB, VBA, C#등)를 사용해야합니다.

중간에 PDF가 포함된 PPT를 CSV 파일로 변환하는 프로그램을 살펴보고 싶으신가요?데이터가 CSV 형식이면 php/perl을 통해 훨씬 더 쉽게 처리할 수 있습니다.

Office 문서 형식은 일반적으로 매우 복잡하기 때문에 처음부터 이를 수행하는 데는 시간이 많이 소요됩니다.

Zend 프레임 워크가 있으면 상당히 도움이 될 수 있습니다. 여기를 봐유용한 문서. 여기를 봐 Excel 파일을 작성하기 위해.

나는 내가 직장에서하는 일과 비슷하지만 대부분 엑셀과 말로 일하지만 일합니다. 가장 좋은 방법은 PowerPoint의 VBA를 사용하여 각 페이지를보고 총알을 찾는 것입니다. 그런 다음 CSV 형식의 파일, 각 총알에 다른 라인에 글을 쓰며, 이는 자체 행에 총알을 엽니 다.

총알이 무엇인지, 그리고 트릭이 아닌 것을 찾는 것은 트릭이 될 수 있습니다. 일부 매크로를 선택하고, 총알을 추가 및 삭제하고, 몇 가지 레벨을 변경하십시오. 그것은 당신에게 어떤 개체를 찾고 있는지, 어떻게 작업 할 수 있는지에 대한 충분한 정보를 제공해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top