Wie kann ich das öffnen einer Excel-Datei, ohne das es gesperrt wird?
Ich habe einen Prozess erstellt eine Excel-Bericht, dann öffnet es sich für den Anwender. Das problem ist, wenn jemand verlässt Sie die Datei öffnen, es bleibt gesperrt, und niemand sonst kann das erstellen des Berichts, bis die erste person beendet die excel-Datei.
Gibt es eine Möglichkeit zum öffnen einer Excel-Datei ohne Verriegelung, unter Verwendung entweder Process.Start
oder Microsoft Interop.Excel
Bibliothek?
Ich die Interop-Bibliothek zum erstellen der Datei bei jeder Ausführung des Berichts, und speichern Sie es als eine statische Datei-Namen in einem freigegebenen Netzwerkordner, in dem diese Anwendung ausgeführt wird
using Excel = Microsoft.Office.Interop.Excel;
...
xlsBook.SaveAs(newFileName, Excel.XlFileFormat.xlWorkbookNormal);
Und öffnen Sie die Datei mit Process.Start
Process.Start(newFileName);
Danke, aber jede person, die den Bericht ausführen, überschreibt die Datei mit einer neuen Kopie mit neuen Daten, so glaube ich nicht funktioniert.
Sie können öffnen von excel-Dateien readonly was ich davon ausgehen, nicht sperren, aber ich weiß es nicht. Ich bin mir nicht sicher, ob es Befehlszeilen-äquivalente, die dies tun wird. Eine andere Methode, die Federn zu denken, ist ein "Hilfs" - excel-Datei mit Makros zu tun, magic, entweder in Form des öffnens der Datei, die Sie wollen, nur Lesen oder verwendet es die Datei, die Sie erstellt haben, die als eine Datenquelle anstelle von s die wichtigsten report-Datei. Und natürlich je nachdem, was Sie aktualisieren können, und wie konnte man nur mithilfe von excel built-in-Daten Funktionalität zum abrufen Datensätze aus der DB zu setzen, in Ihrem Blatt.
InformationsquelleAutor Rachel | 2012-12-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, die Datei zu öffnen im nur-Lesen-Modus:
Oder Sie können versuchen, speichern Sie es in shared-Modus:
ReadOnly
funktioniert, obwohl ich mussteapp.Visible = true
zu zeigen, ExcelInformationsquelleAutor Oliver
Wenn der end-Nutzer muss nur noch die Datei zu Lesen, anstatt Sie auch zu modifizieren, könnte man erstellen Sie eine shadow-Kopie und öffnen Sie dann die Kopie.
Kopieren Sie einfach die original Datei in ein temporäres Verzeichnis und öffnen Sie es von dort. Die ursprüngliche Datei bleibt unverändert und können somit von anderen geöffnet.
Temporäre Dateien lokal gespeichert werden (sollten es zumindest sein), Sie können Sie also stellen Sie sicher, auto-löschen alle alten Kopien in der entsprechenden Zeit.
Sie können vermeiden, erstellen Sie eine vollständige Kopie durch die Schaffung einer hard-Links statt.
Danke, ich kopierte die Datei des Benutzers lokalen temp-Ordner (
Path.GetTempPath()
) und öffnete es. Ich vergaß, ich war das ändern einer XBAP, die Zugriff auf die Datei-system anstatt des normalen asp.net web-app. Akzeptieren Sie Ihre Antwort, es sei denn, jemand kann mir sagen, von einer Art zu verwendenProcess.Start
oder die Interop-Bibliothek zum öffnen einer Datei, ohne das es gesperrt wird 🙂Hard-links nicht helfen. Sie funktionieren nur auf dem gleichen Laufwerk, und auch Sie zeigen auf die gleiche Datei -> Wenn Sie die Datei öffnen exklusive, versuchen, Sie zu öffnen, durch die harten Verbindung kann nicht hergestellt werden.
InformationsquelleAutor Roy Dictus