qq_20564413 2023-01-06 23:35 采纳率: 21.4%
浏览 72
已结题

power BI 网页筛选器自动筛选截图 python自动化

想咨询下如何利用python实现power bi报表的网页版,自动依次筛选不同的部门,进行截图,放入ppt中形成ppt报告?
能否推荐相关案例,thanks

  • 写回答

6条回答 默认 最新

  • |__WhoAmI__| 2023-01-07 11:20
    关注

    可以使用 Python 库 "pyPowerBI" 来实现这一目标。这个库可以帮助从 Power BI 服务或本地 Power BI 文件中提取数据,并且可以使用 Python 自动化 Power BI 的各种操作。

    要想使用 pyPowerBI,首先需要在计算机上安装 Python 和 pyPowerBI,然后在 Python 代码中导入 pyPowerBI 库。接下来,可以使用 pyPowerBI 的各种方法来连接到 Power BI 服务或本地文件,并且可以使用这些方法自动化 Power BI 的各种操作,例如选择不同的部门并对报表进行筛选。

    也可以使用 Python 库 "Selenium" 来实现对 Power BI 报表的截图,并将截图放入 PPT 中。Selenium 可以模拟浏览器的行为,可以使用 Selenium 打开 Power BI 报表的网页版,并使用 Selenium 的截图功能对报表进行截图。

    下面是一个示例代码,该代码使用 pyPowerBI 库连接到 Power BI 服务,并使用 Selenium 截取 Power BI 报表的截图:

    # Import the necessary libraries
    import pyPowerBI
    from selenium import webdriver
    
    # Connect to the Power BI service
    powerbi = pyPowerBI.PowerBI("my_username", "my_password")
    
    # Select the report and the page you want to take a screenshot of
    report_id = "12345678-abcd-1234-abcd-1234567890ab"
    page_name = "Page1"
    
    # Get the URL of the report page
    report_page = powerbi.reports.get_report_page(report_id, page_name)
    report_url = report_page["webUrl"]
    
    # Use Selenium to open the report page and take a screenshot
    driver = webdriver.Firefox()
    driver.get(report_url)
    driver.save
    

    仅供参考,望采纳,谢谢。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • heart_6662 2023-01-06 23:56
    关注

    可以使用 Python 中的 pyautogui 库来实现自动筛选并截图的功能。

    首先,你需要在 Power BI 网页版中打开你想要截图的报表。然后,你可以使用 pyautogui 的 click() 函数来单击报表中的筛选器控件,使用 write() 函数来输入筛选条件,并使用 press() 函数来模拟按下回车键。最后,你可以使用 pyautogui 的 screenshot() 函数来截取整个屏幕的图像,并将它保存到磁盘上。

    下面是一个示例代码,假设你已经打开了 Power BI 网页版并且已经选择了一个报表:

    import pyautogui
    
    # 单击筛选器控件
    pyautogui.click(x=100, y=200)
    
    # 输入筛选条件
    pyautogui.write("Department1")
    
    # 模拟按下回车键
    pyautogui.press("enter")
    
    # 截图
    image = pyautogui.screenshot()
    
    # 保存图像到磁盘
    image.save("screenshot.png")
    
    

    这样你就可以在程序中循环调用这些代码,自动筛选不同的部门并将截图放入 PPT 中了。

    希望这些信息对你有帮助!

    评论
    1人已打赏
  • BsonJ 2023-01-07 00:34
    关注

    网页自动化可以考虑使用selenium

    评论
  • hsu8999 2023-01-07 11:25
    关注

    可以使用 Python 的第三方库 pptx 和 selenium 来实现这个功能。

    首先,你可以使用 selenium 来模拟浏览器访问 power bi 网页报表,并使用 selenium 的 API 来操作网页中的元素,例如点击下拉列表或按钮等。

    然后,你可以使用 selenium 的截图功能来截取网页中报表的图片。

    最后,你可以使用 pptx 库来创建 PowerPoint 文件并将图片插入到幻灯片中。

    这是一个使用 selenium 和 pptx 库的示例代码,演示了如何创建一个 PowerPoint 文件并插入一张图片:

    from pptx import Presentation
    from selenium import webdriver
    
    # 创建一个新的 PowerPoint 文件
    prs = Presentation()
    
    # 添加一张幻灯片
    slide = prs.slides.add_slide(prs.slide_layouts[1])
    
    # 在幻灯片上添加一张图片
    img_path = 'image.png'  # 图片路径
    left = top = 0  # 图片位置
    pic = slide.shapes.add_picture(img_path, left, top)  # 添加图片
    
    # 保存 PowerPoint 文件
    prs.save('presentation.pptx')
    

    你可以在每次筛选不同的部门时使用 selenium 来截图,然后使用 pptx 库将图片插入到 PowerPoint 中。
    望采纳!

    评论
  • Marco119 2023-01-07 11:28
    关注

    为了实现这个功能,你可以使用 Python 的 Selenium 库控制浏览器,并使用 Python 的 PPTX 库创建和编辑 PPT 文件。

    下面是一个可以作为参考的简单案例:

    首先,使用 pip 安装 Selenium 和 PPTX 库:

    pip install selenium
    pip install python-pptx
    
    

    然后,在 Python 代码中导入这两个库:

    from selenium import webdriver
    from pptx import Presentation
    
    

    接下来,使用 Selenium 控制浏览器,登录 Power BI 网站,并转到要截图的报表页面:

    driver = webdriver.Chrome()
    driver.get('https://powerbi.microsoft.com/')
    
    # 登录 Power BI 网站
    # 省略登录代码
    
    # 转到要截图的报表页面
    driver.get('https://app.powerbi.com/reportEmbed?reportId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
    
    

    然后,使用 Selenium 操作浏览器,依次选择不同的部分,并截图:

    # 选择第一个部分
    driver.find_element_by_css_selector('#QnaFilterPane_1 > div > div.filter-pane-values-container > div:nth-child(1)').click()
    screenshot = driver.get_screenshot_as_png()
    
    # 选择第二个部分
    driver.find_element_by_css_selector('#QnaFilterPane_1 > div > div.filter-pane-values-container > div:nth-child(2)').click()
    screenshot = driver.get_screenshot_as_png()
    
    # 
    

    接下来,使用 Python 的 PPTX 库创建 PPT 文件,并将截图插入到 PPT 中:

    # 创建新的 PPT 文件
    prs = Presentation()
    
    # 添加第一张幻灯片
    slide = prs.slides.add_slide(prs.slide_layouts[0])
    
    # 将截图插入到幻灯片中
    picture = slide.shapes.add_picture(screenshot, left=0, top=0)
    
    # 添加第二张幻灯片
    slide = prs.slides.add_slide(prs.slide_layouts[0])
    
    # 将截图插入到幻灯片中
    picture = slide.shapes.add_picture(screenshot, left=0, top=0)
    
    # 保存 PPT 文件
    prs.save('report.pptx')
    
    

    最后,使用 Selenium 关闭浏览器:

    driver.close()
    
    

    希望这些信息能够帮助你!

    评论
  • Mr数据杨 Python领域优质创作者 2023-01-07 12:10
    关注

    可以使用 Python 来自动化网页筛选器的筛选过程。 为了这样做,需要使用 Power BI REST API 来控制网页筛选器。

    首先需要获取 Power BI 应用程序令牌。 可以使用 Azure AD 身份验证库来获取此令牌。 然后可以使用该令牌来调用 Power BI REST API,并通过使用 "Update Web Filter" API 来设置网页筛选器的筛选值。

    import requests
    import json
    
    # Replace with your Azure AD tenant name
    tenant_name = "your-tenant-name"
    
    # Replace with your client ID and client secret
    client_id = "your-client-id"
    client_secret = "your-client-secret"
    
    # Replace with your resource URL
    resource_url = "https://analysis.windows.net/powerbi/api"
    
    # Set up the authentication request
    auth_url = f"https://login.windows.net/{tenant_name}/oauth2/token"
    auth_data = {
        "client_id": client_id,
        "client_secret": client_secret,
        "resource": resource_url,
        "grant_type": "client_credentials"
    }
    
    # Get the access token
    response = requests.post(auth_url, data=auth_data)
    access_token = response.json()["access_token"]
    
    # Set the headers for the API request
    headers = {
        "Authorization": f"Bearer {access_token}",
        "Content-Type": "application/json"
    }
    
    # Replace with your workspace ID and report ID
    workspace_id = "your-workspace-id"
    report_id = "your-report-id"
    
    # Set the API URL
    api_url = f"https://api.powerbi.com/v1.0/myorg/groups/{workspace_id}/reports/{report_id}/UpdateWebFilter"
    
    # Set the filter values
    filter_values = [
        {
            "table": "YourTable",
            "column": "YourColumn",
            "operator": "In",
            "values": ["Value1", "Value2"]
        }
    ]
    
    # Set the API payload
    payload
    
    
    
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 1月17日
  • 已采纳回答 1月9日
  • 创建了问题 1月6日

悬赏问题

  • ¥15 关于网上一个easyx制作的见缝插针小游戏(c++)
  • ¥15 开地址法双散列函数处理碰撞
  • ¥15 想问一下这个是什么情况 虚拟机Linux打不开了
  • ¥15 联通光猫掉注册了怎么重新注册上去
  • ¥15 关于unity开发steamvr程序遇到的问题
  • ¥60 求tc downloader的下载方式
  • ¥15 华为 快捷方式 手电筒 接口
  • ¥15 Qt6.5支不支持Android13开发啊
  • ¥20 网络只能跑一半,应该如何设置
  • ¥20 Python调用百度开发者平台人脸识别接口