我已经在此方面寻求帮助,我认为我已经穷尽了所有选择。
我有一个报告,生成约32万行,并且导出到Excel的速度非常慢。太慢了,甚至在渲染结束后(如ExecutionLog3
所示),甚至都没有创建excel文件。
我删除了报告标题,甚至将其导出到其他工作表中以创建一个较小的excel文件,并且没有合并的单元格。没有任何列具有任何格式。是导致缓慢导出到Excel的常见原因,对吧?
这是ExecutionLog3
TimeStart TimeEnd TimeDataRetrieval_Secs TimeProcessing_Secs TimeRendering_Secs TotalTime_Secs ReportSizeMB RowCount Status Format Source
2019-06-12 09:20:57.310 2019-06-12 09:32:41.313 0.000000 0.047000 703.907000 703.954000 55.596719 0 rsSuccess EXCELOPENXML Session
2019-06-12 09:17:44.433 2019-06-12 09:20:01.220 33.336000 103.222000 0.080000 136.638000 0.502475 323800 rsSuccess RPL Live
这是EXCELOPENXML的AddionalInfo列的输出
<AdditionalInfo>
<ProcessingEngine>2</ProcessingEngine>
<ScalabilityTime>
<Pagination>0</Pagination>
<Rendering>0</Rendering>
<Processing>0</Processing>
</ScalabilityTime>
<EstimatedMemoryUsageKB>
<Pagination>32831</Pagination>
<Rendering>356162</Rendering>
<Processing>55997</Processing>
</EstimatedMemoryUsageKB>
<Connections />
</AdditionalInfo>
为了进行比较,请使用Excel自身中的“从SQL数据库获取数据”功能,并使用相同的参数执行相同的SP-整个过程大约需要72秒才能加载数据并在Excel中显示。
关于如何改善出口的任何想法?
答案 0 :(得分:0)
从SQL Server导入Excel,并在Excel中进行汇总,制图,制图等。下面的示例代码将从SQL Server抓取数据并将其拉入Excel。
Sub TestMacro()
' Create a connection object.
Dim cnPubs As ADODB.Connection
Set cnPubs = New ADODB.Connection
' Provide the connection string.
Dim strConn As String
'Use the SQL Server OLE DB Provider.
strConn = "PROVIDER=SQLOLEDB;"
'Connect to the Pubs database on the local server.
strConn = strConn & "DATA SOURCE=(local);INITIAL CATALOG=NORTHWIND.MDF;"
'Use an integrated login.
strConn = strConn & " INTEGRATED SECURITY=sspi;"
'Now open the connection.
cnPubs.Open strConn
' Create a recordset object.
Dim rsPubs As ADODB.Recordset
Set rsPubs = New ADODB.Recordset
With rsPubs
' Assign the Connection object.
.ActiveConnection = cnPubs
' Extract the required records.
.Open "SELECT * FROM YourTable"
' Copy the records into cell A1 on Sheet1.
Sheet1.Range("A1").CopyFromRecordset rsPubs
' Tidy up
.Close
End With
cnPubs.Close
Set rsPubs = Nothing
Set cnPubs = Nothing
End Sub
答案 1 :(得分:0)
我发现这个解决方案非常有用:
这里是关于这个解决方案的一般想法:
在 Reporting Services 中,导出报表时,报表会作为临时格式传递给特定的呈现器。 excel由强大而复杂的引擎处理,外观精美,功能丰富,因此导出如此大量的数据需要更长的时间。针对您的需求,我们可以通过以下步骤来提高导出excel的性能:
1- 不要合并 Tablix 数据区域中的单元格。
2- 考虑在报告中使用分页符。
3- 选择生成较小文件的格式,例如 CSV。由于它只是一个纯文本文件,写入速度很快,我们可以将报表导出为csv格式,然后用excel打开。