2013-04-29 3 views
-1

여러 exel 파일에서 데이터를 추출하고, 그래프를 그린 다음, 기존 템플릿을 사용하여 포인트 포인트로 데이터를 표시 할 수 있는지 궁금합니다. 나는 파이썬을 사용해 보았지만 지금까지는 VB로 갈 것을 제안했다. 나는 너의 도움에 정말로 감사 할 것이다. 여기 내 데이터베이스를엑셀 파일에서 파워 포인트로 데이터 변환

    엑셀 이름의 다음과 같은 스타일로 파일을 포함
  1. 여러 디렉토리 dir_1/paint_for_yard1/Blue_light_b2.xls dir_1/paint_for_yard1/Red_light_b3.xls dir_1/pat_for_yard8/Green_light_b2.xls 모양이다가 각 디렉토리 아래에 여러 개의 파일이 있고 안료 - 색상, 일 - 시간, 야간 - 시간의 세 가지 열에 많은 데이터가 포함되어 있습니다
  2. 데이터를 기반으로 업데이트해야하는 파워 포인트 템플릿이 있습니다. 파일 형식을 다음과 같이 바꿉니다. 두 번째 페이지 (표지 뒤)는 다음과 같아야합니다. e 헤더 paint_for_yard1 : Blue_light

    페이지 본문 : day_run_time이 최소 일 때 최대 day_run_time 및 pigment_color를 제공하는 테이블이 있습니다. 그런 다음 안료 색, 일 실행 시간, 야간 실행 시간 차트를 같은 페이지에 만듭니다.

  3. 각 파일에 대해 2 단계를 수행하고 파워 포인트에 페이지를 추가하십시오.

저는 소프트웨어 전문가가 아니기 때문에 파이썬이나 VB 또는 조합이 도움이되는지 아닌지 잘 모르겠습니다. 제안 사항을 보내 주시면 감사하겠습니다. 아닐

답변

1

거의 모든 '성장'프로그래밍 언어이 할 수

감사합니다. 그래서 ... C#/VB.NET/Python이 이것을 해결할 수 있습니다.

나는 파워 포인트 템플릿 안에 VBA 스크립트가 있다고 생각한다. VBA는 Office 용으로 특별히 제작되었으며 Excel과 통신 할 수 있습니다.

0

나는 Excel 파일로부터 파워 포인트 프리젠 테이션을 만들기 위해 Follow Sub를 사용한다.

Sub Gera_PPT(PFile As String, EFile As String, Plans As Collection) 
'officevb.com 
'PFile= PowerPoint Template empty powerPoint with Slide Master to presentation 
'EFile = Excel File with Charts and Tables 
'Plans = A collection with names of sheets to transpose 
Dim rg As Range 
'objetos usados para o powerpoint 
Dim pptA As Object 
Dim ppt As Object 
Dim sld As Object 

Debug.Print "passei 1" 


If Not ValidaCaminho(PFile) Then 
    MsgBox "PowerPoint file not found!", vbInformation 
    Exit Sub 
Else 
    Set pptA = CreateObject("PowerPoint.Application") 
    pptA.Visible = msoCTrue 
    'pptA.WindowState = -1 
    Set ppt = pptA.Presentations.Open(PFile) 
End If 

'objetos usados para o Excel 
Dim ExA As Excel.Application 
Dim wb As Excel.Workbook 
Dim sht As Excel.Worksheet 


If Not ValidaCaminho(EFile) Then 
    MsgBox "Excel file not found!!", vbInformation 
    Exit Sub 
Else 
    Set ExA = New Excel.Application 
    'ExA.Visible = True 
    Set wb = Workbooks.Open(EFile, False) 
End If 

Debug.Print "passei 2" 

'For Each sht In wb.Sheets 
For i = 1 To Plans.Count 

Set sht = wb.Sheets(Plans(i)) 

    Select Case Left(sht.Name, 1) 

    'Debug.Print "passei 3" 
    'case is Table 
    Case "T" 
      Set sld = ppt.Slides.AddSlide(ppt.Slides.Count + 1, ppt.SlideMaster.CustomLayouts(2)) 
      sld.Select 
      sld.Shapes.Placeholders(2).Select msoCTrue 

      Set rg = sht.Range("B4").CurrentRegion 
      rg.Copy 
      ppt.Windows(1).View.PasteSpecial ppPasteMetafilePicture 

    Case "G" 
    'Case is 1 Chart 

     If sht.ChartObjects.Count = 1 Then 

       Set sld = ppt.Slides.AddSlide(ppt.Slides.Count + 1, ppt.SlideMaster.CustomLayouts(2)) 
       sld.Select 
       sld.Shapes.Placeholders(2).Select msoCTrue 

       sht.ChartObjects(1).Copy 

       ppt.Windows(1).View.PasteSpecial ppPasteMetafilePicture 

'    sld.Shapes.Placeholders.Item(1).TextFrame.TextRange.Text = sht.[A2] 
     Else 
     'Case is >1 Chart 
       Set sld = ppt.Slides.AddSlide(ppt.Slides.Count + 1, ppt.SlideMaster.CustomLayouts(4)) 
       sld.Select 

       sht.Activate 

       sld.Shapes.Placeholders(1).TextFrame.TextRange.Text = sht.Range("A2").Value 

       sld.Shapes.Placeholders(2).Select msoCTrue 
       sht.ChartObjects(1).Copy 
       ppt.Windows(1).View.PasteSpecial ppPasteMetafilePicture 

       sld.Shapes.Placeholders(3).Select msoCTrue 
       sht.ChartObjects(2).Copy 
       ppt.Windows(1).View.PasteSpecial ppPasteMetafilePicture 

     End If 

    End Select 

Next i 

'Insert LastSlide 
Set sld = ppt.Slides.AddSlide(ppt.Slides.Count + 1, ppt.SlideMaster.CustomLayouts(5)) 

wb.Close False 
ExA.Quit 

Strfile = Split(apoio.[PPTFile], "\") 

ppt.SaveAs YourFilePath & "\" & Split(Strfile(UBound(Strfile)), ".")(0) & "-" & Format(Date, "ddmmyyyy") 

pptA.Quit 

MsgBox "Presentation created!", vbInformation 

End Sub 
관련 문제