2012-03-27 10 views
0

Über eine C#/ASP.NET-Website verwende ich SpreadsheetGear, um eine Datei aus einer Vorlage zu öffnen und dann basierend auf Benutzereingaben Änderungen daran vorzunehmen und sie dann an einem neuen Speicherort zu speichern. Wenn ich versuche, die neu erstellte Datei nach dem Speichern manuell zu öffnen, erhalte ich die Meldung, dass SpreadsheetGear die Datei für die Bearbeitung gesperrt hat.Spreadsheetgear hält die Dateisperre aufrecht

Hier Code-Schnipsel unten:

SpreadsheetGear.IWorkbook workbook = SpreadsheetGear.Factory.GetWorkbook(pathToTemplate); 
workbook.WorkbookSet.GetLock(); 
SpreadsheetGear.IWorksheet worksheet = workbook.Worksheets["sheetName"]; 
SpreadsheetGear.IRange cells = worksheet.Cells; 

//fill in worksheet 
... 

workbook.SaveAs(pathToGeneratedFiles + exportFileName, SpreadsheetGear.FileFormat.XLS97); 
workbook.WorkbookSet.ReleaseLock(); 

worksheet = null; 
workbook.Close(); 
workbook = null; 

Das einzige, was ich in der nicht angezeigten denken kann „fill in Arbeitsblatt“ Abschnitt, der auch etwas schwierig ist, eine Spalte zu löschen und die anderen Spalten nach links verschoben wird.

Irgendwelche Gedanken? Vielen Dank.

+0

Ein Fehler von "SpreadsheetGear hat die Datei für die Bearbeitung gesperrt" klingt eher wie etwas, das Microsoft Excel tun könnte. SpreadsheetGear sperrt Dateien nicht beim Öffnen und Bearbeiten wie Excel - es "sperrt" nur eine Datei für die normalerweise kurze Zeit, die zum Lesen/Schreiben der Datei von der Festplatte benötigt wird. Wie lautet der genaue Wortlaut des Fehlers, den Sie erhalten? –

+0

@Tim, bekomme ich eine Nachricht lesen: " ist gesperrt für die Bearbeitung von 'SpreadsheetGear für .NET 1.6.0.122'" und ich habe dann die Standard-schreibgeschützt, Benachrichtigen und Abbrechen Optionen. Es sieht genauso aus wie der Fehler, den ich bekomme, wenn jemand die Datei geöffnet hat. –

Antwort

0

Also, es stellte sich heraus, eine alte Kopie der SpreadsheetGear DLL in meinem Projekt bin-Ordner. Sobald wir es aktualisiert haben, ging das Problem weg. Danke für die Hilfe.

1

Haben Sie dies ohne GetLock() versucht? GetLock() wird normalerweise nicht bei der ASP.net-Programmierung verwendet. Nach the website docs,

Es besteht keine Notwendigkeit GETLOCK und ReleaseLock zu verwenden, wenn eine Arbeitsmappe Satz verwendet, die nicht an einem beliebigen Windows-gebunden ist, Komponenten von SpreadsheetGear.

+1

Daniel ist korrekt. Sie müssen GetLock/ReleaseLock nicht in einem typischen ASP.NET-Szenario verwenden. Auch wenn Sie einen gültigen Grund für die Verwendung von Sperren haben, sollte die Zeile workbook.Close() vor dem Aufruf von ReleaseLock() ausgeführt werden. –

+0

Der ursprüngliche Code hatte nicht GetLock() oder ReleaseLock() und hatte das Problem, dass die gespeicherte Datei für die Bearbeitung gesperrt war. Die Aufrufe dieser Funktionen wurden hinzugefügt, um die Situation zu lösen. –

+0

Eine Sache, die Sie überprüfen können, ist sicherzustellen, dass die Excel-Vorlagendatei geschlossen ist und keine Sperrdatei mit ihr verbunden ist, wenn Sie GetWorkbook() ausführen. Wenn die Vorlagendatei über eine Sperre verfügt, kann dies zu Problemen führen. – Daniel

Verwandte Themen