im Moment ist mein derzeitiger Prozess wie folgt. Datenbank abfragen -> Datei lokal speichern -> Arbeitsmappe mit Excel Interop Dll öffnen, Änderungen am Arbeitsbuch vornehmen, Speichern unter Verwendung von Excel Interop Dll. Der Grund für das Speichern ist, weil ich einige zusätzliche Einstellungen benötige, so dass die Datei nicht auf schreibgeschützt eingestellt ist.Wie mit Excel-Datei im Speicher arbeiten
Das Problem, das ich finde, ist, dass es lokal zweimal speichert. Das erste Mal ist in Ordnung, zum zweiten Mal erscheint eine Abfrage, ob ich übergehen möchte. Ich frage mich, wie kann ich den Save File Locally-Prozess entfernen und im Speicher haben, um damit zu arbeiten? Wenn ich mit der Datei im Speicher arbeiten kann, würde ich die Eingabeaufforderung Save As
fragen, ob ich die vorherige Datei überschreiben möchte.
Code:
//Save File Locally
System.IO.File.WriteAllBytes(saveFileDialog.FileName, Report.FileArray);
var fileLocation = saveFileDialog.InitialDirectory + saveFileDialog.FileName;
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
// Open Workbook Using Excel Interop Dll
Workbook wb = excel.Workbooks.Open(fileLocation);
Worksheet ws1 = wb.Worksheets.get_Item("English");
//Make Changes To WorkBook
ws1.Range["E5"].Value = StartDate;
ws1.Range["G5"].Value = EndDate;
// Save AS Using Excel Interop With shared settings to remove read only access
wb.SaveAs(fileLocation, AccessMode: XlSaveAsAccessMode.xlShared);
Process.Start(fileLocation);
Möglicherweise möchten Sie das Open XML SDK verwenden. Es ist eine Linq-API für die XLSX-Datei. Viel weniger Probleme mit dem Aufruf der Excel-COM-API. –
@DavidThielen Danke für die Empfehlung, ich werde mich darum kümmern! – Master