|
|
Excel öffnen mit Asp.Net (Fenster öffnet und schließt sich, ohne geschehnis)
Letzter Beitrag 03-31-2010, 12:25 von Stefan Falz. 9 Antworten.
-
02-23-2010, 10:21 |
-
UnKnOwN_86
-
-
-
-
Registriert am 10-24-2009
-
-
Beiträge 44
-
-
|
Excel öffnen mit Asp.Net (Fenster öffnet und schließt sich, ohne geschehnis)
Hi. Ich versuche ein Excel File zu öffnen. Hab schon eine Menge gegoogelt und auch auf einigen eine Lösung gefunden und zwar diese:
string name = Session["FileName"].ToString(); string path = Session["FilePath"].ToString(); Response.ContentType = "Application/x-msexcel"; Response.AppendHeader("Content-Disposition", "attachment; filename=" + name.Replace("'","")); FileInfo fileInfo = new FileInfo(@path); //Response.WriteFile(path, 0 ,fileInfo.Length); Response.TransmitFile(path); Response.End();
Diese Lösung hat vor ein paar Wochen auch funktioniert, aus einem merkwürdigen Grund jetzt aber nicht mehr. Es kommt keine Fehlermeldung oder der gleichen, das Fenster öffnet sich und schließt sich sofort wieder...
Hoffe ihr könnt mir helfen, habe diesen Fehler leider nicht durch google lösen können. Btw, dieses Verhalten passiert auf meinem Lokalen Rechner wie auch am Server wo diese Seite laufen soll.
Mfg UnKnOwN_86
|
|
-
02-23-2010, 10:41 |
-
UnKnOwN_86
-
-
-
-
Registriert am 10-24-2009
-
-
Beiträge 44
-
-
|
AW: Excel öffnen mit Asp.Net (Fenster öffnet und schließt sich, ohne geschehnis)
Okay....
Es reinem Interessem Drang, habe ich es mal mit dem FireFox getestet und es funktioniert dort.
Ich habe ehrlich gesagt keine Ahnung was ich in den letzten Tagen an meinem IE8 geändert haben soll, dass er dies nicht mehr öffnen will. Ich hoffe ihr könnt mir helfen, dieses anscheinende IE8 (oder vielleicht auch andere IEs) Problem zu lösen.
Falls ihr bestimmte Einstellungen von meinem IE8 wissen müsst fragt mich, ich habe keine Ahnungen welche Einstellugen dies beeinflussen könnten.
Mfg UnKnOwN_86
|
|
-
02-23-2010, 11:59 |
-
UnKnOwN_86
-
-
-
-
Registriert am 10-24-2009
-
-
Beiträge 44
-
-
|
AW: Excel öffnen mit Asp.Net (Fenster öffnet und schließt sich, ohne geschehnis)
So.. Nach einigen ausprobieren habe ich den Übeltäter entlarvt, und zwar ist es folgende Einstellung:
"Automatische Eingabeaufforderung für Dateidownloads" in den Sicherheitszonen, diese ist standardmäßig deaktiviert.
Nun ist es mögliche eine "Manuelle Eingabeaufforderung" durchzuführen, also dass ich per Code den Save/Open-Dialog erzwinge?!?
Oder gibt es eine Möglichkeit diese Einstellung per Code auf aktiviert zu setzten?!?
Hoffe ihr könnt mir helfen.
Mfg UnKnOwN_86
|
|
-
02-23-2010, 12:08 |
-
Stefan Falz
-
ASP.NET Zone Team
-
-
-
Registriert am 12-15-2000
-
-
Beiträge 5.765
-
-
|
AW: Excel öffnen mit Asp.Net (Fenster öffnet und schließt sich, ohne geschehnis)
Hi, UnKnOwN_86:"Automatische Eingabeaufforderung für Dateidownloads" in den Sicherheitszonen, diese ist standardmäßig deaktiviert.
Nun ist es mögliche eine "Manuelle Eingabeaufforderung" durchzuführen, also dass ich per Code den Save/Open-Dialog erzwinge?!?
Oder gibt es eine Möglichkeit diese Einstellung per Code auf aktiviert zu setzten?!?
Serverseitig kannst Du da gar nichts machen. Allerdings wundert es mich schon ein wenig, dass das nicht funktionieren soll, dann dürfte ja gar kein Download mehr klappen. Was passiert denn, wenn Du mal den Content-Type auf "application/vnd.ms-excel" setzt? Falls das noch nichts hilft, probier mal "inline" anstelle von "attachment" bei Content-Disposition.
-- Gruß, Stefan Falz Microsoft MVP - Visual Developer ASP/ASP.NETASP.NET Consulting, Development, CoachingASP.NET Zone - Leitfaden für gute PostingsXtopia 2008 - Gewinnspiel / Expression Studio und Xtopia Eintrittskarten zu gewinnen
|
|
-
02-23-2010, 13:32 |
-
UnKnOwN_86
-
-
-
-
Registriert am 10-24-2009
-
-
Beiträge 44
-
-
|
AW: Excel öffnen mit Asp.Net (Fenster öffnet und schließt sich, ohne geschehnis)
Hab beides aus probiert und funktioniert leider nicht. :(
Normale Downloads (also Downloads von irgendwelchen seiten) funktionieren, hab auch versuchte die Seite in die Vertrauenswürdigen Sites hizuzufügen, und der Download hat dennoch gestartet.
Ich habe folgendes nun im Internet gefunden:
using Microsoft.Win32;
try { Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Desktop\Components", "GeneralFlags", "0", RegistryValueKind.DWord); Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0", "2200", "0", RegistryValueKind.DWord); Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1", "2200", "0", RegistryValueKind.DWord); Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2", "2200", "0", RegistryValueKind.DWord); Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3", "2200", "0", RegistryValueKind.DWord); Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\4", "2200", "0", RegistryValueKind.DWord); } catch {}
Dies setzt die Einstellung auf aktiviert für alle Zonen, für den Fall der User ist nicht in der richtigen Zone.
Es ist nicht wirklich eine gute Lösung, suche mehr nach einer Lösung ohne Registry Einträge zu ändern, aber dies funktioniert sogar am Server auf lokalen Rechner (also Server liegt WebPage und ändert LokaleEinstellungen, ohne Rücksprache mit dem User - Sicherheit gleich 0)
Edit:
Desweiteren, funktiont der Download auf der selben Seite auch ohne Probleme, wenn ich beim ReportViewer Export to Excel mache kommt auch der Save/Open Dialog, ohne dass ich die Einstellugen geändert habe. Also müsste es eine Möglichkeit geben diesen zu erzwingen, denn wie schaffst es ReportViewer wenn es nicht ginge, ist auch nur ein simpler Datei Download.
|
|
-
03-26-2010, 13:07 |
-
UnKnOwN_86
-
-
-
-
Registriert am 10-24-2009
-
-
Beiträge 44
-
-
|
AW: Excel öffnen mit Asp.Net (Fenster öffnet und schließt sich, ohne geschehnis)
Hi.
Das Problem ist leider nicht 100% gelöst, wie man sich vielleicht hätte denken können, funktioniert das ganze nur mit admin usern.
Ich hoffe ihr könnt mir helfen.
|
|
-
03-28-2010, 20:29 |
-
UnKnOwN_86
-
-
-
-
Registriert am 10-24-2009
-
-
Beiträge 44
-
-
|
AW: Excel öffnen mit Asp.Net (Fenster öffnet und schließt sich, ohne geschehnis)
Hat keiner ein Lösung für dieses Problem. :(
Kann doch eigentlich nicht so schwer sein möchte doch nur eine Excel-Datei öffnen, und dabei den Speichern/Öffnen/Abbrechen Dialog bekommen.
:(
|
|
-
03-28-2010, 20:42 |
-
Stefan Falz
-
ASP.NET Zone Team
-
-
-
Registriert am 12-15-2000
-
-
Beiträge 5.765
-
-
|
AW: Excel öffnen mit Asp.Net (Fenster öffnet und schließt sich, ohne geschehnis)
Hi, UnKnOwN_86:Hat keiner ein Lösung für dieses Problem. :(
Kann doch eigentlich nicht so schwer sein möchte doch nur eine Excel-Datei öffnen, und dabei den Speichern/Öffnen/Abbrechen Dialog bekommen.
:(
das Problem dabei ist, dass irgendwas auf deinem Rechner nicht zu stimmen scheint. Wenn ich das hier nachstelle, erhalte ich den "Speichern unter" Dialog. Probier mal bitte, das ganze in einem Handler zu machen. Du hast das wohl in einer Webform oder einem UserControl, oder? Imports System.Web Public Class ExcelDownload Implements System.Web.IHttpHandler Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest context.Response.Clear() context.Response.ContentType = "application/vnd.ms-excel" context.Response.AddHeader( "Content-Disposition", "inline;filename=test.xls" ) context.Response.TransmitFile( context.Server.MapPath( "~/App_Data/test.xls" ) ) context.Response.End() End Sub ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable Get Return False End Get End Property End ClassObiges ist der Code des Handlers (allerdings VB, übersetzen darfst Du dann selbst :)
-- Gruß, Stefan Falz Microsoft MVP - Visual Developer ASP/ASP.NETASP.NET Consulting, Development, CoachingASP.NET Zone - Leitfaden für gute PostingsXtopia 2008 - Gewinnspiel / Expression Studio und Xtopia Eintrittskarten zu gewinnen
|
|
-
03-29-2010, 9:58 |
-
UnKnOwN_86
-
-
-
-
Registriert am 10-24-2009
-
-
Beiträge 44
-
-
|
AW: Excel öffnen mit Asp.Net (Fenster öffnet und schließt sich, ohne geschehnis)
Hi.
Also an meinem Pc kann es nicht liegen. Das die Registry nicht immer funktioniert hab ich erst erfahren, als mich mein Chef aus Russland angerufen hat, und fragte warum dies nicht funktioniert... Dann habe ich die Einstellung manuell durch geführt und es funktionierte.
Zur Zeit funktioniert es bei mir so:
EditExcel.aspx
void btn_click() { Excel.Application oXL; Excel._Workbook oWB; Excel._Worksheet oSheet;
oXL = new Excel.Application(); oWB = oXL.Workbooks.Add(Server.MapPath(@"~\Excel\Vorlage.xls")); oSheet = (Excel.Worksheet)oWB.ActiveSheet;
// Excel ansprechen, Cells[0,0].... und soweiter
if (File.Exists(Server.MapPath(@"~\Excel\" + name))) File.Delete(Server.MapPath(@"~\Excel\" + name));
oWB.SaveAs(Server.MapPath(@"~\Excel\" + name), Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); oWB.Close(Excel.XlSaveAction.xlSaveChanges, Server.MapPath(@"~\Excel\" + name), Type.Missing); oXL.Quit();
oSheet = null; oWB = null; oXL = null; GC.Collect();
Session["FileName"] = name; Session["FilePath"] = Server.MapPath(@"~\Excel\" + name); ScriptManager.RegisterStartupScript(this, this.GetType(), "LoadExcel", "window.open(\"../xyz/OpenExcel.aspx\", \"mywindow\");", true); }
OpenExcel.aspx (Normale WebPage - im Aspx file ist nichts ausser die Standard sachen, und die PageLoad schaut wie folgt aus, sonst ist NICHTS auf der Page) protected void Page_Load(object sender, EventArgs e) { string name = Session["FileName"].ToString(); string path = Session["FilePath"].ToString(); Response.ContentType = "application/vnd.ms-excel"; Response.AppendHeader("Content-Disposition", "inline; filename=" + name.Replace("'", "")); FileInfo fileInfo = new FileInfo(@path); //Response.WriteFile(path, 0 ,fileInfo.Length); Response.TransmitFile(path); Response.End(); }
Den Handler umschreiben dürfte kein Problem sein, nur wo gehört der nun genau hin?!? In mein OpenExcel.aspx anstatt dem PageLoad oder gehört das in ne eigene .cs Datei die in dann aufrufe?!?
|
|
-
03-31-2010, 12:25 |
-
Stefan Falz
-
ASP.NET Zone Team
-
-
-
Registriert am 12-15-2000
-
-
Beiträge 5.765
-
-
|
AW: Excel öffnen mit Asp.Net (Fenster öffnet und schließt sich, ohne geschehnis)
Hi, UnKnOwN_86: Also an meinem Pc kann es nicht liegen. Das die Registry nicht immer funktioniert hab ich erst erfahren, als mich mein Chef aus Russland angerufen hat, und fragte warum dies nicht funktioniert... Dann habe ich die Einstellung manuell durch geführt und es funktionierte.
Ein generelles Problem seitens des Frameworks kanns auch nicht sein. Und dass sowas nur als Admin funzen soll, hab ich auch noch nie gehört. UnKnOwN_86:Zur Zeit funktioniert es bei mir so:
EditExcel.aspx
void btn_click() { Excel.Application oXL; Excel._Workbook oWB; Excel._Worksheet oSheet;
oXL = new Excel.Application();
Oh, sehr böse[TM] Falle. Excel hat auf einem Webserver nichts, aber auch gar nichts verloren. Das wiederum kann natürlich ein Problem werden. Wenn Du lediglich Daten lesen/aktualisieren willst, dürfte OleDb mit der Jet Engine völlig ausreichen, wenns mehr sein muss, empfiehlt sich eine Komponente wie bspw. Aspose.Cells. Excel selbst solltest Du, wie schon gesagt, definitiv nicht in einer Webanwendung verwenden, das bringt eigentlich nur Probleme mit sich, angefangen von Zombieprozessen bis hin zu einem instabilen System. Den generischen Handler legst Du separat an (hat die Endung .ashx). In deinem Fall gibt in der Webform bspw. das Problem, dass Response.Clear nicht ausgeführt wird, damit wird die HTML Deklaration ebenfalls mit ausgegeben, was dazu führt, dass die Exceldatei eben für den Client keine Exceldatei mehr ist. Bei einem Handler hast Du den Overhead einer Webform nicht und zusätzlich bessere Kontrolle über das, was effektiv an den Client ausgeliefert wird.
-- Gruß, Stefan Falz Microsoft MVP - Visual Developer ASP/ASP.NETASP.NET Consulting, Development, CoachingASP.NET Zone - Leitfaden für gute PostingsXtopia 2008 - Gewinnspiel / Expression Studio und Xtopia Eintrittskarten zu gewinnen
|
|
|
|
|