Vb.net 在不使用ReportViewer的情况下创建.rpt并将其转换为.pdf
我正在编写一个按钮点击功能,允许用户向客户列表发送一封电子邮件,其中包含使用Crystal Reports制作的发票的附件.pdf。我已经有了电子邮件功能,我可以检索正确的信息并向列表中的每个客户发送电子邮件,但我在附件方面遇到了问题 在同一个项目中,我确实有一个带有ReportViewer的窗口,我正在使用该窗口生成和查看单个报告,但是,由于可能会同时创建和发送大量报告,我现在需要在不使用此窗口的情况下创建这些报告 是否可以生成一份报告,然后在不使用ReportViewer的情况下将其转换为.pdf格式?如果可以,我如何才能做到这一点Vb.net 在不使用ReportViewer的情况下创建.rpt并将其转换为.pdf,vb.net,crystal-reports,email-attachments,Vb.net,Crystal Reports,Email Attachments,我正在编写一个按钮点击功能,允许用户向客户列表发送一封电子邮件,其中包含使用Crystal Reports制作的发票的附件.pdf。我已经有了电子邮件功能,我可以检索正确的信息并向列表中的每个客户发送电子邮件,但我在附件方面遇到了问题 在同一个项目中,我确实有一个带有ReportViewer的窗口,我正在使用该窗口生成和查看单个报告,但是,由于可能会同时创建和发送大量报告,我现在需要在不使用此窗口的情况下创建这些报告 是否可以生成一份报告,然后在不使用ReportViewer的情况下将其转换为.
我想也许可以使用SQL选择我需要的所有数据并将其存储在数据集中,但我不确定在这之后需要做什么。它实际上比我想象的要简单 只需设置所需数据库的登录信息,然后使用SQL从数据库中检索数据,并将其存储在一个
数据集
,将其设置为报告数据源
,然后将其导出。显然,你可能有不同的做事方式,但这应该大致做到
Dim report As New ReportDocument
Dim dest As String = ` This is where you put your file destination
report.Load(dest)
Dim info As CrystalDecisions.Shared.TableLogOnInfo
info = New CrystalDecisions.Shared.TableLogOnInfo()
info.ConnectionInfo.DatabaseName = ' Your DB name
info.ConnectionInfo.ServerName =' Your DB server name
info.ConnectionInfo.Password = ' Your DB password
info.ConnectionInfo.UserID = ' Your DB UserID
report.Database.Tables(0).ApplyLogOnInfo(info)
sql = "SELECT * FROM your_table"
Dim rda As New OleDb.OleDbDataAdapter(sql, connectionstring)
Dim rds As New DataSet
rda.Fill(rds)
report.SetDataSource(rds)
CrDiskFileDestinationOptions.DiskFileName = ' Your directory path and chosen file name
CrExportOptions = report.ExportOptions
With CrExportOptions
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.PortableDocFormat
.DestinationOptions = CrDiskFileDestinationOptions
.FormatOptions = CrFormatTypeOptions
End With
report.Export()
其实比我想象的要简单 只需设置所需数据库的登录信息,然后使用SQL从数据库中检索数据,并将其存储在一个
数据集
,将其设置为报告数据源
,然后将其导出。显然,你可能有不同的做事方式,但这应该大致做到
Dim report As New ReportDocument
Dim dest As String = ` This is where you put your file destination
report.Load(dest)
Dim info As CrystalDecisions.Shared.TableLogOnInfo
info = New CrystalDecisions.Shared.TableLogOnInfo()
info.ConnectionInfo.DatabaseName = ' Your DB name
info.ConnectionInfo.ServerName =' Your DB server name
info.ConnectionInfo.Password = ' Your DB password
info.ConnectionInfo.UserID = ' Your DB UserID
report.Database.Tables(0).ApplyLogOnInfo(info)
sql = "SELECT * FROM your_table"
Dim rda As New OleDb.OleDbDataAdapter(sql, connectionstring)
Dim rds As New DataSet
rda.Fill(rds)
report.SetDataSource(rds)
CrDiskFileDestinationOptions.DiskFileName = ' Your directory path and chosen file name
CrExportOptions = report.ExportOptions
With CrExportOptions
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.PortableDocFormat
.DestinationOptions = CrDiskFileDestinationOptions
.FormatOptions = CrFormatTypeOptions
End With
report.Export()
你的意思是你不需要实际显示报告?@reds是的,我不需要显示报告,只需创建报告,然后将其设置为电子邮件附件。你的意思是你不需要实际显示报告?@reds是的,我不需要显示报告,只需创建报告,然后将其设置为电子邮件附件