2017-03-10 19 views
0

我有一個應用程序,當我單擊運行報告按鈕時,它將生成數據並將導出到Excel。停止將數字值轉換爲日期時出現的日期

我的問題是,我在一列是申請號和此列的值有一個數據是,例如是這樣08-20但是當我導出Excel的它會成爲一個日期20-Aug

Excel

請理解我已經在尋找解決方案。我看到一個類似於我的問題,但我沒有gridview,當我點擊運行報告它會自動生成數據,然後導出。

編輯

下面是DAL

Public Shared Function FnGenerateReport(ByVal rm As ReportModel) As DataTable 
     Dim dtbReport As New DataTable 
     Dim strQuery As New StringBuilder 

     strQuery.Append("SELECT R.iResumeID, R.vFirst, R.vMiddle, R.vLast, J.vGeneric, JC.vJobClass, R.dtApply, R.iChannelID, ") 
     strQuery.Append("HS.vHireStatus, R.dtHire, R.vGender, R.vRace, R.vEthnicity, R.vDisability, R.vVeteran, R.vRemarks AS Remarks, J.ftAdCost,R.iTimeToHire AS iTimeToHire, ") 
     strQuery.Append("D.vDivision AS iDivisionID, J.vLocation AS vLocation, J.vLocalised as vLocalised, R.blnEmployee AS blnEmployee, ") 
     strQuery.Append("S.vFullName as vFullName, R.vComments as Comments, JT.vJobCodeTitle as JobCodeTitle, ") 
     strQuery.Append("J.iPosition as PositionType, J.iJobStatus as JobStatus, J.dtPost as DateJobPosted, R.dtAccepted as JobOfferAcceptedDate, ") 
     strQuery.Append("HC.vHCClassificationTitle as ClassificationTitle, J.iHourlySalariedID as HourlySalaried J.vRequisition as vRequisition") 
     strQuery.Append("FROM VS_ResumeDB R ") 
     strQuery.Append("INNER JOIN VS_JobDB J ON R.iJobID = J.iJobID ") 
     strQuery.Append("INNER JOIN VS_CountryDB C ON J.iCountryID = C.iCountryID ") 
     strQuery.Append("INNER JOIN VS_DivisionDB D ON (J.iDivisionID = D.iDivisionID) ") 
     strQuery.Append("LEFT JOIN VS_StaffDB S ON J.iRecruiterID = S.iStaffID ") 
     strQuery.Append("INNER JOIN VS_HireStatusDB HS ON R.iHireStatusID = HS.iHireStatusID ") 
     strQuery.Append("LEFT JOIN VS_JobClassDB JC ON J.iJobClassID = JC.iJobClassID ") 
     strQuery.Append("LEFT JOIN VS_JobCodeTitleDB JT ON JT.iJobCodeID = J.iJobCodeID ") 
     strQuery.Append("LEFT JOIN VS_HCClassificationDB HC on HC.iHCClassificationID = J.iHCClassificationID ") 
     strQuery.Append("WHERE R.blnComplete=1 ") 

     If Len(rm.intCountry) > 0 And rm.intCountry <> 0 Then 
      strQuery.Append("AND [email protected] ") 
     End If 
     If Len(rm.intDivisionID) > 0 And rm.intDivisionID <> 0 Then 
      strQuery.Append("AND [email protected] ") 
     End If 
     If Len(rm.strLocation) > 0 Then 
      strQuery.Append("AND J.vLocation LIKE @Location ") 
     End If 
     If Len(rm.dtePostFrom) > 0 Then 
      strQuery.Append("AND R.dtApply>[email protected] ") 
     End If 
     If Len(rm.dtePostTo) > 0 Then 
      strQuery.Append("AND R.dtApply<[email protected] ") 
      strQuery.Append("AND J.dtPost<[email protected] ") 
     End If 
     If Len(rm.strRequisition) > 0 Then 
      strQuery.Append("AND J.vRequisition LIKE @Requisition ") 
     End If 
     If Len(rm.intHireStatus) > 0 And rm.intHireStatus <> 0 Then 
      strQuery.Append("AND [email protected] ") 
     End If 
     If rm.intType = 0 Or rm.intType = 1 Then 
      strQuery.Append("AND [email protected] ") 
     End If 
     If rm.intJobStatus <> 0 Then 
      strQuery.Append("AND [email protected] ") 
     End If 
     If Len(rm.dteJobPostFrom) > 0 Then 
      strQuery.Append("AND J.dtPost>[email protected] ") 
     End If 
     If Len(rm.dteJobPostTo) > 0 Then 
      strQuery.Append("AND J.dtPost<[email protected] ") 
     End If 

     Return dtbReport 
    End Function 

我對fnGeneratereport代碼而這裏的時候我點擊運行報告我的代碼

Private Function FnGenerateReport() As String 
    arrColumn(0) = 0 
    arrColumn(1) = rm.intColumn1 
    arrColumn(2) = rm.intColumn2 
    arrColumn(3) = rm.intColumn3 
    arrColumn(4) = rm.intColumn4 
    arrColumn(5) = rm.intColumn5 
    arrColumn(6) = rm.intColumn6 
    arrColumn(7) = rm.intColumn7 
    arrColumn(8) = rm.intColumn8 
    arrColumn(9) = rm.intColumn9 
    arrColumn(10) = rm.intColumn10 
    arrColumn(11) = rm.intColumn11 
    arrColumn(12) = rm.intColumn12 
    arrColumn(13) = rm.intColumn13 
    arrColumn(14) = rm.intColumn14 
    arrColumn(15) = rm.intColumn15 
    arrColumn(16) = rm.intColumn16 
    arrColumn(17) = rm.intColumn17 
    arrColumn(18) = rm.intColumn18 
    arrColumn(19) = rm.intColumn19 
    arrColumn(20) = rm.intColumn20 
    arrColumn(21) = rm.intColumn21 
    arrColumn(22) = rm.intColumn22 
    arrColumn(23) = rm.intColumn23 
    arrColumn(24) = rm.intColumn24 
    arrColumn(25) = rm.intColumn25 
    arrColumn(26) = rm.intColumn26 
    arrColumn(27) = rm.intColumn27 

    Dim strHTML As String = "<table border=""1""><tr>" 

    Dim dtbReport As DataTable = BLL.FnGenerateReport(rm) 
    For intColCount As Int16 = 1 To 27 
     If arrColumn(intColCount) = 1 Then 
      strHTML += "<td><strong>Applicant Name</strong></td>" 
     End If 
     If arrColumn(intColCount) = 2 Then 
      strHTML += "<td><strong>Job Applied for</strong></td>" 
     End If 
     If arrColumn(intColCount) = 3 Then 
      strHTML += "<td><strong>EEO-1 Job Classification</strong></td>" 
     End If 
     If arrColumn(intColCount) = 4 Then 
      strHTML += "<td><strong>Date Applied</strong></td>" 
     End If 
     If arrColumn(intColCount) = 5 Then 
      strHTML += "<td><strong>Gender</strong></td>" 
     End If 
     If arrColumn(intColCount) = 6 Then 
      strHTML += "<td><strong>Race</strong></td>" 
     End If 
     If arrColumn(intColCount) = 7 Then 
      strHTML += "<td><strong>Source of Application</strong></td>" 
     End If 
     If arrColumn(intColCount) = 8 Then 
      strHTML += "<td><strong>Status of Application</strong></td>" 
     End If 
     If arrColumn(intColCount) = 9 Then 
      strHTML += "<td><strong>Date of Hire</strong></td><" 
     End If 
     If arrColumn(intColCount) = 10 Then 
      strHTML += "<td><strong>Remarks</strong></td>" 
     End If 
     If arrColumn(intColCount) = 11 Then 
      strHTML += "<td><strong>Advertising Cost</strong></td>" 
     End If 
     If arrColumn(intColCount) = 12 Then 
      strHTML += "<td><strong>Time to Hire</strong></td>" 
     End If 
     If arrColumn(intColCount) = 13 Then 
      strHTML += "<td><strong>Division</strong></td>" 
     End If 
     If arrColumn(intColCount) = 14 Then 
      strHTML += "<td><strong>Location</strong></td>" 
     End If 
     If arrColumn(intColCount) = 15 Then 
      strHTML += "<td><strong>Job Title(Localised)</strong> </td>" 
     End If 
     If arrColumn(intColCount) = 16 Then 
      strHTML += "<td><strong>Internal or External</strong></td>" 
     End If 
     If arrColumn(intColCount) = 17 Then 
      strHTML += "<td><strong>Recruiter</strong></td>" 
     End If 
     If arrColumn(intColCount) = 18 Then 
      strHTML += "<td><strong>Comments</strong></td>" 
     End If 
     If arrColumn(intColCount) = 19 Then 
      strHTML += "<td><strong>Job Code/Title</strong></td>" 
     End If 
     If arrColumn(intColCount) = 20 Then 
      strHTML += "<td><strong>Position Type</strong></td>" 
     End If 
     If arrColumn(intColCount) = 21 Then 
      strHTML += "<td><strong>Job Status</strong></td>" 
     End If 
     If arrColumn(intColCount) = 22 Then 
      strHTML += "<td><strong>Date Job Posted</strong></td>" 
     End If 
     If arrColumn(intColCount) = 23 Then 
      strHTML += "<td><strong>Job offer accepted Date</strong></td>" 
     End If 
     If arrColumn(intColCount) = 24 Then 
      strHTML += "<td><strong>HC Classification</strong></td>" 
     End If 
     If arrColumn(intColCount) = 25 Then 
      strHTML += "<td><strong>Hourly/Salaried</strong></td>" 
     End If 
     If arrColumn(intColCount) = 26 Then 
      strHTML += "<td><strong>Ethnicity</strong></td>" 
     End If 
     If arrColumn(intColCount) = 27 Then 
      strHTML += "<td><strong>Disability Status</strong></td>" 
     End If 
     If arrColumn(intColCount) = 28 Then 
      strHTML += "<td><strong>Veteran Status</strong></td>" 
     End If 
     If arrColumn(intColCount) = 29 Then 
      strHTML += "<td><strong>Requisition No.</strong></td>" 
     End If 
    Next 
    strHTML += "</tr>" 

    If dtbReport.Rows.Count > 0 Then 
     For Each dr As DataRow In dtbReport.Rows 
      strHTML += "<tr/>" 
      For intColCount2 As Int16 = 1 To 27 
       If arrColumn(intColCount2) = 1 Then 
        strHTML += "<td><a href=" & strMainFolderName & "Resume_Details.aspx?r=" & dr("iResumeID") & ">" & dr("vFirst") & " " & dr("vMiddle") & " " & dr("vLast") & "</a></td>" 
       End If 
       If arrColumn(intColCount2) = 2 Then 
        strHTML += "<td>" & dr("vGeneric") & "</td>" 
       End If 
       If arrColumn(intColCount2) = 3 Then 
        strHTML += "<td nowrap>" & dr("vJobClass") & "</td>" 
       End If 
       If arrColumn(intColCount2) = 4 Then 
        strHTML += "<td>" & dr("dtApply").ToShortDateString & "</td>" 
       End If 
       If arrColumn(intColCount2) = 5 Then 
        strHTML += "<td>" & dr("vGender") & "</td>" 
       End If 
       If arrColumn(intColCount2) = 6 Then 
        strHTML += "<td>" & dr("vRace") & "</td>" 
       End If 
       If arrColumn(intColCount2) = 7 Then 
        strHTML += "<td>" 
        If Not IsDBNull(dr("iChannelID")) Then 
         Dim strChannel As String = BLL.FnGetChannel(CInt(dr("iChannelID"))) 
         strHTML += strChannel 
        End If 
        strHTML += "&nbsp;</td>" 
       End If 
       If arrColumn(intColCount2) = 8 Then 
        strHTML += "<td>" & dr("vHireStatus") & "</td>" 
       End If 
       If arrColumn(intColCount2) = 9 Then 
        strHTML += "<td>" 
        If IsDate(dr("dtHire")) Then 
         strHTML += dr("dtHire").ToShortDateString 
        End If 
        strHTML += "</td>" 
       End If 
       If arrColumn(intColCount2) = 10 Then 
        strHTML += "<td>" & dr("Remarks") & "</td>" 
       End If 
       If arrColumn(intColCount2) = 11 Then 
        strHTML += "<td>" 
        If Not IsDBNull(dr("ftAdCost")) Then 
         Replace(FormatNumber(dr("ftAdCost"), 2), ",", "") 
        End If 
        strHTML += "</td>" 
       End If 
       If arrColumn(intColCount2) = 12 Then 
        strHTML += "<td>" & dr("iTimeToHire") & "</td>" 
       End If 
       If arrColumn(intColCount2) = 13 Then 
        strHTML += "<td>" & dr("iDivisionID") & "</td>" 
       End If 
       If arrColumn(intColCount2) = 14 Then 
        strHTML += "<td>" & dr("vLocation") & "</td>" 
       End If 
       If arrColumn(intColCount2) = 15 Then 
        strHTML += "<td>" & dr("vLocalised") & "</td>" 
       End If 
       If arrColumn(intColCount2) = 16 Then 
        strHTML += "<td>" 
        If (dr("blnEmployee")) = "True" Then 
         strHTML += "Internal" 
        Else 
         strHTML += "External" 
        End If 
        strHTML += "</td>" 
       End If 
       If arrColumn(intColCount2) = 17 Then 
        strHTML += "<td>" & dr("vFullName") & "</td>" 
       End If 
       If arrColumn(intColCount2) = 18 Then 
        strHTML += "<td>" & dr("Comments") & "</td>" 
       End If 
       If arrColumn(intColCount2) = 19 Then 
        strHTML += "<td>" & dr("JobCodeTitle") & "</td>" 
       End If 
       If arrColumn(intColCount2) = 20 Then 
        strHTML += "<td>" 
        If (dr("PositionType")) = 1 Then 
         strHTML += "Full-Time" 
        ElseIf (dr("PositionType")) = 2 Then 
         strHTML += "Part-Time" 
        ElseIf (dr("PositionType")) = 3 Then 
         strHTML += "Internship" 
        End If 
        strHTML += "</td>" 
       End If 
       If arrColumn(intColCount2) = 21 Then 
        strHTML += "<td>" 
        If dr("JobStatus") = 1 Then 
         strHTML += "Draft" 
        ElseIf dr("JobStatus") = 2 Then 
         strHTML += "Posted" 
        ElseIf dr("JobStatus") = 3 Then 
         strHTML += "Closed" 
        End If 
        strHTML += "</td>" 
       End If 
       If arrColumn(intColCount2) = 22 Then 
        strHTML += "<td>" 
        If IsDate(dr("DateJobPosted")) Then 
         strHTML += dr("DateJobPosted").ToShortDateString 
        End If 
        strHTML += "</td>" 
       End If 
       If arrColumn(intColCount2) = 23 Then 
        strHTML += "<td>" 
        If IsDate(dr("JobOfferAcceptedDate")) Then 
         strHTML += dr("JobOfferAcceptedDate").ToShortDateString 
        End If 
        strHTML += "</td>" 
       End If 
       If arrColumn(intColCount2) = 24 Then 
        strHTML += "<td>" & dr("ClassificationTitle") & "</td>" 
       End If 
       If arrColumn(intColCount2) = 25 Then 
        strHTML += "<td>" 
        If dr("HourlySalaried") = 1 Then 
         strHTML += "Hourly" 
        ElseIf dr("HourlySalaried") = 2 Then 
         strHTML += "Salaried" 
        End If 
        strHTML += "</td>" 
       End If 
       If arrColumn(intColCount2) = 26 Then 
        strHTML += "<td>" & dr("vEthnicity") & "</td>" 
       End If 
       If arrColumn(intColCount2) = 27 Then 
        strHTML += "<td>" & dr("vDisability") & "</td>" 
       End If 
       If arrColumn(intColCount2) = 28 Then 
        strHTML += "<td>" & dr("vVeteran") & "</td>" 
       End If 
       If arrColumn(intColCount2) = 29 Then 
        strHTML += "<td>" & dr("vRequisition") & "</td>" 
       End If 
      Next 
      strHTML += "</tr>" 
     Next 
    End If 
    strHTML += "</table>" 
    Return strHTML 
End Function 
+0

你用什麼將數據導出到excel? –

+1

嘗試對申請單編號 – MrGadget

+0

@MrGadget預加一個撇號(單引號),我在哪裏放單引號? – chobowski

回答

0

你有沒有試圖改變柱的設置正手,無論是文字還是數字? 如果您標記了整個列,您可以在開始工具欄中更改列的格式。您可以從標準,日期,測試等下拉菜單中選擇。

+0

是的,我嘗試過。但每次我輸出另一個數據時,它仍然是一樣的。 – chobowski