RDLC报表导出时设定导出目录,导出文件名称规则,或提示
原理是拉截ReportExport事件,然后由自定义代码来实现导出过程
可设定导出目录,
可设定文件名称规则
可设定….
Private Sub ReportViewer1_ReportExport(sender As Object, e As ReportExportEventArgs) Handles ReportViewer1.ReportExport
e.Cancel = True ‘取消原事件响应
Dim extension As String
With GetRenderingExtension(e.Extension)
If (.mResult <> EMSuccessFail.resultSuccess) Then
MsgBox("无法导出报表:" & .mInfo, MsgBoxStyle.OkOnly, My.Application.Info.Title)
Return
End If
extension = .mValue
End With
Dim pFilePath As String = MyHub.mConfig.mStoreReportPath
If (String.IsNullOrEmpty(pFilePath)) Then
pFilePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
End If
Dim saveFileDialog As New SaveFileDialog With
{
.Title = "保存路径",
.CheckPathExists = True,
.InitialDirectory = pFilePath, '
.Filter = e.Extension.LocalizedName + " (*" + extension + ")|*" + extension + "|All files(*.*)|*.*",
.FileName = DateTime.Now.ToString("yyyy年MM月dd日HH时"),
.FilterIndex = 0
}
If (saveFileDialog.ShowDialog(Me) = DialogResult.OK) Then
Me.ReportViewer1.ExportDialog(e.Extension, e.DeviceInfo, saveFileDialog.FileName)
Dim pDirectory As New FileInfo(saveFileDialog.FileName)
MyHub.mConfig.mStoreReportPath = pDirectory.DirectoryName
MyHub.mConfig.save(MyHub.mMain.mHost.getConnectionProvider.connectionString)
End If
' Here's where I call my method to prompt user to open the file.
'RadExportHelper.OpenFileWithPrompt(saveFileDialog.FileName);
End Sub
Private Function GetRenderingExtension(pExtension As RenderingExtension) As SuccessFailResult(Of String)
Select Case (pExtension.Name)
Case "EXCEL"
Return SuccessFailResult(Of String).createSuccessResult(".xls")
Case "EXCELOPENXML"
Return SuccessFailResult(Of String).createSuccessResult(".xlsx")
Case "WORD"
Return SuccessFailResult(Of String).createSuccessResult(".doc")
Case "WORDOPENXML"
Return SuccessFailResult(Of String).createSuccessResult(".docx")
Case "PDF"
Return SuccessFailResult(Of String).createSuccessResult(".pdf")
Case "CSV"
Return SuccessFailResult(Of String).createSuccessResult(".csv")
Case "MHTML"
Return SuccessFailResult(Of String).createSuccessResult(".mhtml")
Case "IMAGE"
Return SuccessFailResult(Of String).createSuccessResult(".tif")
Case "XML"
Return SuccessFailResult(Of String).createSuccessResult(".xml")
Case "HTML4.0"
Return SuccessFailResult(Of String).createSuccessResult(".html")
Case Else
Return SuccessFailResult(Of String).createFailResult("不支持的输出类型")
End Select
End Function