gani7787 Ответов: 0

Не удалось загрузить гиперссылку из ячейки excel с помощью ASP.NET


Привет,

я экспортирую данные из asp.net gridview в excel для некоторых данных.

В этом случае одна из ячеек, содержащая гиперссылку в ячейке листа excel.

когда я нажимаю на гиперссылку в excel, то получаю всплывающее окно типа "уведомление о безопасности Microsoft Excel", за которым следует "не удается загрузить запрошенную вами информацию".

Как решить эту проблему.

SQL-запрос для сопоставления с gridview

IF @Spd_Type='Exportdata' 
Begin 

Create Table #Pkids(ID Int) 
Insert into #Pkids 
SELECT R.i.query('Pkid').value('.', 'VARCHAR(20)') 
FROM @Spd_XML.nodes('/DocumentElement/Test') R(i) 
Select

EmpNo,
Case When EmpNo ='' Then '' Else 'http://sas02.sanet.sam.intranet/D2/servlet/Download?auth=basic&event_name=d2_view&_docbase=uatprjarea&id=09139&version=CURRENT' End PDFEmpNo, 
Empname,
Dept, 
From tbl_Student 
Where A.Pkid in(Select * from #Pkids)


End


ASP.NET
<asp:GridView ID="grdEmp" AutoGenerateColumns="false" HeaderStyle-BackColor="Yellow"

ShowHeader="false" runat="server">
<Columns>

<asp:TemplateField>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "EmpName")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblPOPDF" runat="server" Text='<%# Eval("EmpNo") %>' Visible="false" />
<asp:HyperLink ID="lnkbtnDownload" NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "POFEmpNo")%>'

Text='<%# Eval("EmpNo") %>' runat="server"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Dept")%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>


Код ASP.NET.vb
Dim XML As String
XML = Session("XML").ToString

If XML = "<DocumentElement />" Then
Session("XML") = "NULL"
End If

Conn.sqlCmd.Parameters.AddWithValue("@Spd_Type", "ExportData")
Conn.sqlCmd.Parameters.AddWithValue("@Spd_XML", Session("XML").ToString)
ds = Conn.XcuteResult(str, CommandType.StoredProcedure, "SPD_StudentInfo")

grdEmp.DataSource = ds
grdEmp.DataBind()


Наконец, когда я нажимаю на гиперссылку, я получаю следующее сообщение об ошибке.

Ошибка : "cannot download the information you requested".

каково же решение этой проблемы?.

njammy

Что происходит, когда вы получаете доступ к url-адресу непосредственно из своего браузера?

gani7787

получение ошибки : "не удается загрузить запрошенную вами информацию".

njammy

Тогда что то не так с сервером а не с вашим кодом

Richard Deeming

Вы не экспортируете файл Excel. Вы экспортируете HTML-фрагмент, но отправляете заголовок, чтобы браузер сделал вид, что это файл Excel. Затем Excel попытается импортировать этот HTML-фрагмент в новый рабочий лист, но у вас будет очень мало контроля над тем, как этот импорт работает.

Вам, вероятно, повезет больше, если вместо этого вы экспортируете настоящий файл Excel. Есть несколько библиотек, которые позволяют вам это сделать - например, EPPlus[^], ClosedXML[^], и SDK OpenXML[^].

NB: Не пытайтесь использовать Office Interop для создания файла, так как это не поддерживается в ASP.NET приложения[^].

gani7787

Спасибо за вашу большую помощь.
ваши предложения просто великолепны. можете ли вы, пожалуйста. приведите один пример, чтобы открыть http-ссылку с помощью asp.net гиперссылка в файле excel. (http://sas02.sanet.sam.intranet/D2/servlet/Download?auth=basic&event_name=d2_view&_docbase=uatprjarea&id=09139&version=CURRENT) -- & gt; URL as empno like " 1001"

0 Ответов