2016-03-30 13 views
1

Hallo ich versuche, mit Excel-Dateien und C# zu arbeiten. Im Moment kann ich mit xlsx Dateien arbeiten und kann es öffnen und so weiter. Aber wenn ich es in xlsm Dateien ändere, bekomme ich immer eine Ausnahme, dass die Dateien nicht gefunden wurden und ich keine Ahnung warum. Hier ist mein Code:C# lesen/schreiben .xlsm Dateien

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using DocumentFormat.OpenXml.Packaging; 
using DocumentFormat.OpenXml.Spreadsheet; 
using Excel = Microsoft.Office.Interop.Excel; 
using Microsoft.Office.Interop; 
using System.Reflection; 
using System.Windows.Forms; 
using System.Diagnostics; 

namespace WorkWithExcel 
{ 
    class reportingController 
    { 

     public void createExcelFile() 
     { 
      Excel.Application oXL = new Excel.Application(); 

      Excel.Workbook oWB = oXL.Workbooks.Add(Missing.Value); 

      oWB.SaveAs(Application.StartupPath + "\\PROJEKTSTATUS_GESAMT_neues_Layout.xlsm", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); 

      oWB.Close(true, Missing.Value, Missing.Value); 
     } 

     public void openExcelFile() 
     { 
      Excel.Application oXL = new Excel.Application(); 

      Excel.Workbook oWB = oXL.Workbooks.Open(Application.StartupPath + "PROJEKTSTATUS_GESAMT_neues_Layout.xlsm", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); 

      //read Excel sheets 
      foreach (Excel.Worksheet ws in oWB.Sheets) 
      { 
       MessageBox.Show(ws.Name); 
      } 

      //save as separate copy 
      oWB.SaveAs(Application.StartupPath + "\\PROJEKTSTATUS_GESAMT_neues_Layout_neu.xlsm", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); 

      oWB.Close(true, Missing.Value, Missing.Value); 
     } 

     public void writeExcelFile() 
     { 
      Excel.Application oXL = new Excel.Application(); 
      Excel.Workbook oWB = oXL.Workbooks.Open(Application.StartupPath + "\\PROJEKTSTATUS_GESAMT_neues_Layout.xlsm", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); 
      Excel.Worksheet oWS = oWB.Worksheets[1] as Excel.Worksheet; 

      //rename the Sheet name 
      oWS.Name = "Excel Sheet"; 

      for (int i = 1; i < 10; i++) 
      { 
       oWS.Cells[i, 1] = "Cell " + i.ToString(); 
      } 
      oWB.SaveAs(Application.StartupPath + "\\PROJEKTSTATUS_GESAMT_neues_Layout.xlsm", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); 

      Process.Start(Application.StartupPath + "\\PROJEKTSTATUS_GESAMT_neues_Layout.xlsm "); 
     } 

     public void readExcelFile() 
     { 
      Excel.Application oXL = new Excel.Application(); 

      Excel.Workbook oWB = oXL.Workbooks.Open(Application.StartupPath + "\\PROJEKTSTATUS_GESAMT_neues_Layout.xlsm", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); 

      Excel.Worksheet oWS = oWB.Worksheets[1] as Excel.Worksheet; 

      Excel.Range range; 

      range = oWS.UsedRange; 

      //read first row, first cell value 
      MessageBox.Show((string)(range.Cells[1, 1] as Excel.Range).Value2); 
     } 

    } 
} 

Und hier ist die Ausnahme:

An exception of type 'System.Runtime.InteropServices.COMException' occurred in WorkWithExcel.exe . 

Additional information: ' C : \ Users \ AAN \ Documents \ Visual Studio 2015 \ Projects \ Work With Excel \ Work With Excel \ bin \ DebugPROJEKTSTATUS_GESAMT_neues_Layout.xlsm ' was not found. Check the spelling of the filename , and verify that the file location is correct . 

Aber die Datei vorhanden ist.

Mit einer .xlsx-Datei funktioniert es aber nicht mit einem xlsm. Also jede Hilfe wäre großartig. Also habe ich versucht, Google und einige Blogs, aber nichts hat für mich gearbeitet. Mabey gibt es etwas, das ich nicht bekomme ....

Danke für Ihre Zeit und Entschuldigung für mein Englisch.

+0

fügen Sie bitte die volle Ausnahmemeldung zu Ihrem Beitrag. – Sybren

+1

Ist das nicht einfach so, dass ein \ zwischen dem Application.StartupPath und dem Dateinamen fehlt? Der Pfad in der Ausnahme scheint das \ zu fehlen. – DoctorMick

+0

@DoctorMick gut thx das ist etwas, was ich nicht bemerkt habe ..... und es funktioniert .... – opelhatza

Antwort

0

brauchen Ihr Weg

"C : \ Users \ AAN \ Documents \ Visual Studio 2015 \ Projects \ Work With Excel \ Work With Excel \ bin \ Debug \ PROJEKTSTATUS_GESAMT_neues_Layout.xlsm" 

und nicht

"C : \ Users \ AAN \ Documents \ Visual Studio 2015 \ Projects \ Work With Excel \ Work With Excel \ bin \ DebugPROJEKTSTATUS_GESAMT_neues_Layout.xlsm" 

hinzufügen \ nach Debug

Fix diese Linie sein:

Excel.Workbook oWB = oXL.Workbooks.Open(Application.StartupPath + "PROJEKTSTATUS_GESAMT_neues_Layout.xlsm"... 

dies:

Excel.Workbook oWB = oXL.Workbooks.Open(Application.StartupPath + "\\PROJEKTSTATUS_GESAMT_neues_Layout.xlsm"... 

Oder besser, verwenden Sie einen konstanten Wert

+0

gut hat es nicht bemerkt, aber danke für die Hilfe – opelhatza