exportToDisk问题生成空的excel [英] exportToDisk problem generate empty excel
本文介绍了exportToDisk问题生成空的excel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想自动生成excel文件,一些文件由同一个Crystal报告生成,但参数不同。然后我用了并选择。但是当文件在for中生成时,如果没有记录文件变空,没有标题,没有任何内容。我无法解决它。谁可以帮助我?
I want to generate excel files automatically, some files generated by same crystal report, but different parameter. then I used for and select. but when the files are generated in the for, if no records the file become empty, no title, no anything. I cannot solve it. who can help me?
Module AutoInterface
Public Sub AutoInterfaceDriver()
Dim sModuleName As String = "AutoLogin"
' Initial Log files
goLog = New LogAdapter(sModuleName)
For i As Integer = 0 To 1
Dim sAutoCompanyID As String = My.Application.CommandLineArgs(i)
Dim dt As DataTable
Try
goLog.Append("Get auto-login particulars for """ & sAutoCompanyID & """.")
dt = gdbGeneral.AutoLogins.GetAutoLogin(sAutoCompanyID)
If dt.Rows.Count = 0 Then
Throw New Exception("Auto-login setting has not been set for company id """ & sAutoCompanyID & """.")
Else
' Get Auto login particulars
goAccpac.UserID = dt.Rows(0).Item("USERID").ToString
goAccpac.Password = dt.Rows(0).Item("USERPSW").ToString
goAccpac.SessionDate = Date.Today
goAccpac.AccpacDB = sAutoCompanyID
' Login into Accpac
goAccpac.Connect()
goLog.Append("Auto-login successful.")
End If
dt.Dispose()
AutoPrint("WIP-FINISH")
AutoPrint("WIP-RAW")
AutoPrint("MI631016")
AutoPrint("Intercompany-StockBalance")
AutoPrint("SCRAP-WEBOPEN")
AutoPrint("MI631006")
Catch ex As Exception
goLog.Append(ex.Message)
goLog.Append(ex.ToString)
End Try
Next
End Sub
Public Sub AutoPrint(ByVal rptName As String)
Try
Print_UsingCrystalReportNet(rptName)
Catch ex As Exception
goLog.Append(ex.ToString)
End Try
End Sub
Sub Print_UsingCrystalReportNet(ByVal rptName As String)
Try
Dim rpt As New ReportDocument
With rpt
' Load the report
.Load(My.Application.Info.DirectoryPath & "\Reports\" & goAccpac.AccpacDB & "\" & rptName & ".rpt", CrystalDecisions.Shared.OpenReportMethod.OpenReportByDefault)
For i As Integer = 0 To .DataSourceConnections.Count - 1
.DataSourceConnections.Item(i).SetConnection("", gdbAccpac.DSNName, False)
Next
' Verify the database
.VerifyDatabase()
If (Not System.IO.Directory.Exists(My.Application.Info.DirectoryPath & "\XLS\" & goAccpac.AccpacDB & "\")) Then
System.IO.Directory.CreateDirectory(My.Application.Info.DirectoryPath & "\XLS\" & goAccpac.AccpacDB & "\")
End If
End With
' Set parameters
Select Case Split(rptName, "-")(0)
Case "WIP"
rpt.SetParameterValue("YEAR", DateTime.Now.Year.ToString())
rpt.SetParameterValue("PERIOD", DateTime.Now.Month.ToString())
Case "TOOL"
rpt.SetParameterValue("From Completed Date", (DateTime.Now.AddDays(-DateTime.Now.Day + 1)).ToString("yyyy-MM-dd"))
rpt.SetParameterValue("To Completed Date", (DateTime.Now.AddMonths(1).AddDays(-DateTime.Now.AddMonths(1).Day)).ToString("yyyy-MM-dd"))
Case "SCRAP"
rpt.SetParameterValue("From Completed Date", (DateTime.Now.AddDays(-DateTime.Now.Day + 1)).ToString("yyyy-MM-dd"))
rpt.SetParameterValue("To Completed Date", (DateTime.Now.AddMonths(1).AddDays(-DateTime.Now.AddMonths(1).Day)).ToString("yyyy-MM-dd"))
Case "Intercompany"
rpt.SetParameterValue("Please select Date", (DateTime.Now.AddMonths(1).AddDays(-DateTime.Now.AddMonths(1).Day)).ToString("yyyy-MM-dd"))
Dim myParameterFields As ParameterFields
myParameterFields = rpt.ParameterFields()
If (goAccpac.AccpacDB.Equals("HTSFP")) Then
SetDateRange(myParameterFields, "BT", "Z1")
ElseIf (goAccpac.AccpacDB.Equals("HTSCO")) Then
SetDateRange(myParameterFields, "BT", "TRM")
End If
End Select
If rptName.Equals("MI631016") Then
Dim strRNG2 As String = String.Empty
For i As Integer = 1 To 7
With rpt
.SetParameterValue("CMPNAME", goAccpac.Session.CompanyName)
.SetParameterValue("QDEC", "6")
.SetParameterValue("MDEC", "6")
.SetParameterValue("TDEC", "6")
.SetParameterValue("ITEMIDFMT", "%-24C")
If (goAccpac.AccpacDB.Equals("HTSFP")) Then
Dim sfItemFrom = Heitkamp.My.Settings.HTSFP_ItemFrom.ToString()
Dim sfItemTo = Heitkamp.My.Settings.HTSFP_ItemTo.ToString()
.SetParameterValue("FROMITEM", sfItemFrom)
.SetParameterValue("TOITEM", sfItemTo)
ElseIf (goAccpac.AccpacDB.Equals("HTSCO")) Then
Dim coItemFrom = Heitkamp.My.Settings.HTSCO_ItemFrom.ToString()
Dim coItemTo = Heitkamp.My.Settings.HTSCO_ItemTo.ToString()
.SetParameterValue("FROMITEM", coItemFrom)
.SetParameterValue("TOITEM", coItemTo)
End If
Select Case i
Case 1
.SetParameterValue("RNG2LO", "WH1")
.SetParameterValue("RNG2HI", "WH4")
strRNG2 = "WH1TO4"
Case 2
.SetParameterValue("RNG2LO", "S1")
.SetParameterValue("RNG2HI", "S1")
strRNG2 = "S1"
Case 3
.SetParameterValue("RNG2LO", "R1")
.SetParameterValue("RNG2HI", "R5")
strRNG2 = "R1TO5"
Case 4
.SetParameterValue("RNG2LO", "PC1")
.SetParameterValue("RNG2HI", "PC5")
strRNG2 = "PC1TO5"
Case 5
.SetParameterValue("RNG2LO", "OF")
.SetParameterValue("RNG2HI", "OF")
strRNG2 = "OF"
Case 6
.SetParameterValue("RNG2LO", "TATA")
.SetParameterValue("RNG2HI", "TATA")
strRNG2 = "TATA"
Case 7
.SetParameterValue("RNG2LO", "")
.SetParameterValue("RNG2HI", "ZZZZZ")
.SetParameterValue("FROMITEM", Heitkamp.My.Settings.ZZZZZ_ItemFrom.ToString())
.SetParameterValue("TOITEM", Heitkamp.My.Settings.ZZZZZ_ItemTo.ToString())
strRNG2 = "ZZZZ"
End Select
Dim timefile = DateTime.Now.Date.ToString("ddMMyyyy")
.ExportToDisk(ExportFormatType.Excel, My.Application.Info.DirectoryPath & "\XLS\" & goAccpac.AccpacDB & "\" & rptName & "_" & strRNG2 & "_" & timefile & ".XLS")
'Threading.Thread.Sleep(5000)
goLog.Append(goAccpac.AccpacDB & "\" & rptName & "_" & strRNG2 & "_" & timefile & ".XLS. Auto Created.")
End With
Next
ElseIf rptName.Equals("MI631006") Then
Dim strRNG2 As String = String.Empty
For i As Integer = 1 To 6
With rpt
.SetParameterValue("CMPNAME", goAccpac.Session.CompanyName)
.SetParameterValue("QDEC", "6")
.SetParameterValue("MDEC", "6")
.SetParameterValue("TDEC", "6")
.SetParameterValue("ITEMIDFMT", "%-24C")
.SetParameterValue("FROMITEM", "")
.SetParameterValue("TOITEM", "ZZZZZZZZZZ")
Select Case i
Case 1
.SetParameterValue("RNG2LO", "BT")
.SetParameterValue("RNG2HI", "BT")
strRNG2 = "BT"
Case 2
.SetParameterValue("RNG2LO", "CS")
.SetParameterValue("RNG2HI", "CS")
strRNG2 = "CS"
Case 3
.SetParameterValue("RNG2LO", "ME")
.SetParameterValue("RNG2HI", "ME")
strRNG2 = "ME"
Case 4
.SetParameterValue("RNG2LO", "TRM")
.SetParameterValue("RNG2HI", "TRM")
strRNG2 = "TRM"
Case 5
.SetParameterValue("RNG2LO", "WTP")
.SetParameterValue("RNG2HI", "WTP")
strRNG2 = "WTP"
Case 6
.SetParameterValue("RNG2LO", "MT")
.SetParameterValue("RNG2HI", "MT")
strRNG2 = "WT"
End Select
Dim timefile = DateTime.Now.Date.ToString("ddMMyyyy")
.ExportToDisk(ExportFormatType.Excel, My.Application.Info.DirectoryPath & "\XLS\" & goAccpac.AccpacDB & "\" & rptName & "_" & strRNG2 & "_" & timefile & ".XLS")
'Threading.Thread.Sleep(5000)
goLog.Append(goAccpac.AccpacDB & "\" & rptName & "_" & strRNG2 & "_" & timefile & ".XLS. Auto Created.")
End With
Next
Else
Dim timefile = DateTime.Now.Date.ToString("ddMMyyyy")
rpt.ExportToDisk(ExportFormatType.Excel, My.Application.Info.DirectoryPath & "\XLS\" & goAccpac.AccpacDB & "\" & rptName & "_" & timefile & ".XLS")
'Threading.Thread.Sleep(5000)
goLog.Append(goAccpac.AccpacDB & "\" & rptName & "_" & timefile & ".XLS. Auto Created.")
End If
Catch ex As Exception
goLog.Append(ex.Message)
goLog.Append(ex.ToString())
End Try
End Sub
Private Sub SetDateRange(ByVal myParameterFields As ParameterFields, ByVal startDate As String, ByVal endDate As String)
Dim myParameterRangeValue As ParameterRangeValue = New ParameterRangeValue()
myParameterRangeValue.StartValue = startDate
myParameterRangeValue.EndValue = endDate
myParameterRangeValue.LowerBoundType = RangeBoundType.BoundInclusive
myParameterRangeValue.UpperBoundType = RangeBoundType.BoundInclusive
Dim myParameterField As ParameterField = myParameterFields("Location")
myParameterField.CurrentValues.Clear()
myParameterField.CurrentValues.Add(myParameterRangeValue)
End Sub
End Module
推荐答案
当报告有记录时。如果没有记录没有显示任何内容,那没关系。
when the report have record. that's ok, if no record don't show anything.
这篇关于exportToDisk问题生成空的excel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文