C# 将excel文件中的数据转换为power point

C# 将excel文件中的数据转换为power point,c#,python,vb.net,excel,powerpoint,C#,Python,Vb.net,Excel,Powerpoint,我想知道是否有可能自动从多个exel文件中提取数据,绘制一个图表,并最终使用预先存在的模板在pointpoint中显示数据。我试过Python,但可以用它走得更远,现在有人建议使用VB。我将非常感谢你的帮助。 这是我的数据库看起来像 包含以下名称样式的excel文件的多个目录 dir_1/油漆_用于_yard1/蓝色_灯_b2.xls dir_1/油漆_用于_yard1/红灯_b3.xls 方向1/码8/绿灯b2.xls 每个目录下有多个文件,包含三列中的许多数据(颜料颜色、白天运行时间、晚上运

我想知道是否有可能自动从多个exel文件中提取数据,绘制一个图表,并最终使用预先存在的模板在pointpoint中显示数据。我试过Python,但可以用它走得更远,现在有人建议使用VB。我将非常感谢你的帮助。 这是我的数据库看起来像

  • 包含以下名称样式的excel文件的多个目录 dir_1/油漆_用于_yard1/蓝色_灯_b2.xls dir_1/油漆_用于_yard1/红灯_b3.xls 方向1/码8/绿灯b2.xls 每个目录下有多个文件,包含三列中的许多数据(颜料颜色、白天运行时间、晚上运行时间)
  • 我有一个power point模板,需要根据以下格式的excel文件中的数据进行更新 第二页(封面之后)的页眉应包含以下内容 油漆1码:蓝光

    在页面正文中:有一个表格,给出了最大的日运行时间和最小的日运行时间时的颜色)。 然后在同一页面中创建颜料颜色、日间运行时间、夜间运行时间图表

  • 对每个文件执行步骤2,并在power point中添加页面
  • 由于我不是一名软件专家,我不确定Python、VB或两者的结合是否会对我有所帮助。 如有任何建议,将不胜感激

    谢谢
    Anil

    几乎任何“成熟”的编程语言都能做到这一点。所以C#/VB.NET/Python可以为您解决这个问题


    我想我会选择PowerPoint模板中的VBA脚本。VBA是专为Office设计的,它可以与Excel进行通信。

    我使用follow Sub从Excel文件创建powerpoint演示文稿

    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