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.
fügen Sie bitte die volle Ausnahmemeldung zu Ihrem Beitrag. – Sybren
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
@DoctorMick gut thx das ist etwas, was ich nicht bemerkt habe ..... und es funktioniert .... – opelhatza