You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SharePoint托管SSRS报表自动导出Excel及订阅T-SQL代码咨询

SharePoint托管报表自动导出Excel及订阅T-SQL方案

一、自动导出报表至Excel的正确方式

你之前使用的RSViewerPage.aspx是报表在线查看页面,仅用于渲染报表供浏览,不会自动触发Excel下载。要实现直接导出,需调用Report Server的Render命令接口绕过查看页面,示例URL格式如下:

http://someServerName/_vti_bin/ReportServer?/Reports/Balance%20Sheet&rs:Command=Render&rs:Format=EXCEL&rp:DateRange=Last Month
  • 核心参数说明:
    • _vti_bin/ReportServer:SharePoint集成模式下Report Server的核心端点
    • rs:Command=Render:明确触发报表渲染导出操作
    • rs:Format=EXCEL:指定导出格式为Excel(也可使用EXCELOPENXML对应xlsx格式)
    • rp:DateRange=Last Month:传递报表参数

如果需要自动保存到本地或指定位置,可结合PowerShell脚本调用:

Invoke-WebRequest -Uri "http://someServerName/_vti_bin/ReportServer?/Reports/Balance%20Sheet&rs:Command=Render&rs:Format=EXCELOPENXML&rp:DateRange=Last Month" -OutFile "C:\Output\BalanceSheet.xlsx"

二、创建SharePoint托管报表订阅的T-SQL说明

重要提示

SharePoint集成模式下,报表订阅数据存储在SharePoint内容数据库中,微软不支持直接修改内容数据库,直接操作可能导致数据损坏、失去官方支持或升级失败。优先推荐使用Reporting Services的Web服务API(如ReportService2010.asmx的CreateSubscription方法)创建订阅。

参考T-SQL示例(非官方支持)

若需尝试T-SQL方式,步骤如下:

  1. 查询目标报表的ItemID:
SELECT ItemID, Name, DirName
FROM [WSS_Content].[dbo].[AllDocs]
WHERE Name = 'Balance Sheet.rdl'
AND DirName = '/Reports' -- 报表所在的文档库路径
  1. 插入订阅记录(替换占位符为实际值):
INSERT INTO [WSS_Content].[dbo].[Subscriptions]
(
    ItemID,
    OwnerID,
    DeliveryExtension,
    Settings,
    LastStatus,
    EventType,
    MatchData,
    LastRunTime,
    NextRunTime,
    ModifiedDate,
    CreatedDate,
    Status,
    IsDataDriven
)
VALUES
(
    '替换为报表的ItemID', -- 第一步查询得到的ItemID
    (SELECT tp_ID FROM [WSS_Content].[dbo].[UserInfo] WHERE tp_Login = 'DOMAIN\你的用户名'), -- 订阅所有者ID
    'EXCELOPENXML', -- 导出格式,可选EXCEL/EXCELOPENXML
    -- 交付设置XML:指定保存路径、文件名等
    '<Settings>
        <DeviceInfo>
            <FileName>BalanceSheet_{&DateRange}.xlsx</FileName>
            <Path>http://someServerName/Shared Documents/报表导出/</Path>
            <Overwrite>True</Overwrite>
        </DeviceInfo>
    </Settings>',
    'New subscription', -- 初始状态
    'TimedSubscription', -- 订阅类型:定时订阅
    -- 调度XML:示例为每月1日凌晨2点运行
    '<ScheduleDefinition>
        <StartDateTime>2024-01-01T02:00:00</StartDateTime>
        <MonthlyRecurrence>
            <Days>1</Days>
            <MonthsOfYear>
                <January>True</January><February>True</February><March>True</March>
                <April>True</April><May>True</May><June>True</June>
                <July>True</July><August>True</August><September>True</September>
                <October>True</October><November>True</November><December>True</December>
            </MonthsOfYear>
        </MonthlyRecurrence>
    </ScheduleDefinition>',
    NULL, -- 上次运行时间,初始为NULL
    '2024-01-01T02:00:00', -- 下次运行时间
    GETDATE(), -- 修改时间
    GETDATE(), -- 创建时间
    0, -- 状态:0为正常
    0 -- 是否为数据驱动订阅:0为否
)

内容的提问来源于stack exchange,提问作者brdrok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:12:43