RKeyy Sii Ответов: 2

Как получить точное значение с сайта в excel?


У меня есть веб-сайт, который, когда я нажимаю кнопку Запустить отчет, генерирует данные и экспортируется в excel.

Моя проблема заключается в том, что у меня есть данные в столбце, Значение которого, например, похоже на это 08-20, которое находится под номером заявки столбца, но когда я экспортирую его в excel, он станет датой типа "20 августа".

Что же мне делать? Есть ли код, в котором данные будут просто отображаться в excel как есть? Пожалуйста, помогите мне с этим. Спасибо.

вот мой код при нажатии кнопки запустить отчет

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


Что я уже пробовал:

Я попробовал поставить одну цитату так

If arrColumn(intColCount2) = 29 Then
						strHTML += "<td>‘" & dr("vRequisition") & "</td>"
                    End If


теперь это выглядит так
'08-20
в excel. Можно ли скрыть ' в начале текста?

CHill60

Используйте Улучшить вопрос свяжите и поделитесь кодом, который вы используете для экспорта данных в Excel. Обычно вы можете заставить excel иметь определенные форматы для определенных столбцов, но как именно это будет сделано, будет зависеть от того, как вы экспортируете данные. Мы не можем видеть ваш экран!

RKeyy Sii

Улучшил мой вопрос

ZurdoDev

Вы можете попробовать поместить одну кавычку ' перед данными ('08-20), чтобы excel рассматривал ее как текст. Или вы можете погуглить, как использовать css для экспорта текста в excel.

RKeyy Sii

извините за поздний ответ, но я уже давно не был в сети. Я уже пробовал поместить одинарную кавычку в свой код в vb, и да, он показывает '08-20 в excel, но можно ли скрыть' (одинарную кавычку) при просмотре или отображении в excel?

2 Ответов

Рейтинг:
15

CHill60

При импорте из HTML в excel попробуйте добавить неразрывный пробел в конец значения.

rHTML += "<td>" & dr("vRequisition") &  "&nbsp;</td>"
Я очень удивлен, что символ одинарной кавычки был виден-это не стандартное поведение Excel. Я заметил, что символ в вашем коде был и нет '. (Edit-символ теперь не копируется поперек! Однако вы можете увидеть характер вашего вопроса) Это может быть особенностью форматирования здесь или из вашей системы, но чтобы преодолеть это, используйте код ascii в одинарных кавычках явно, например
rHTML += "<td>&#39;" & dr("vRequisition") &  "</td>"
Второе предложение более " похоже на excel"


RKeyy Sii

@CHill60 мне очень жаль, но он все еще показывает одинарную кавычку в excel

RKeyy Sii

Когда я дважды щелкну по ячейке, а затем перейду к следующей, хотя одинарная кавычка будет невидима, так что мне всегда нужно это делать?

CHill60

Ах - вы находитесь в режиме редактирования в ячейке, когда видите одинарную кавычку? То есть по замыслу. Если вы на самом деле просто "просматриваете" результаты, то цитата не должна быть видна

Рейтинг:
1

Patrice T

Вы экспортируете данные в Excel, создавая html-файл, и у вас есть проблемы с некоторыми значениями.
Проще всего сделать это с помощью Excel, чтобы создать образец файла с этими проблемными значениями, А затем насытить его как html-файл, таким образом, Excel покажет вам, как он справляется со специальными значениями.

Я сделал образец листа с:
1
Ab
13/03/2017
08-20 (ввод как ' 08-20)

<tr height=21 style='height:15.75pt'>
  <td height=21 align=right width=112 style='height:15.75pt;width:84pt' x:num>1</td>
 </tr>
 <tr height=21 style='height:15.75pt'>
  <td height=21 style='height:15.75pt'>a</td>
 </tr>
 <tr height=21 style='height:15.75pt'>
  <td height=21 class=xl24 align=right style='height:15.75pt' x:num="42807">13/03/2017</td>
 </tr>
 <tr height=21 style='height:15.75pt'>
  <td height=21 style='height:15.75pt' x:str="'08-20">08-20</td>
 </tr>