2016-03-30 8 views
1

Привет, я пытаюсь работать с файлами Excel и C#. Сейчас я могу работать с файлами xlsx и открывать его и так далее. Но когда я меняю его на xlsm Files, я всегда получаю исключение, если файлы, которые не найдены, и я не знаю, почему. Вот мой код:C# чтение/запись .xlsm Файлы

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); 
     } 

    } 
} 

А вот Exeption:

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 . 

Но файл есть.

С файлом .xlsx он работает, но не с xlsm. Поэтому любая помощь была бы замечательной. Поэтому я попытался использовать Google и некоторые блоги, но для меня ничего не работало. Mabey есть кое-что, что я не получаю ....

Спасибо за ваше время и извините за мой английский.

+0

Пожалуйста, добавьте полное сообщение об исключении на свой пост. – Sybren

+1

Разве это не так просто, как отсутствие a \ между theWare.StartupPath и именем файла? Кажется, что путь в исключении отсутствует. – DoctorMick

+0

@DoctorMick well thx это то, что я не заметил ..... и он работает .... – opelhatza

ответ

0

Ваш путь должен быть

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

и не

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

Добавить \ после Debug

исправить эту строку:

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

к этому:

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

Или лучше использовать постоянное значение

+0

хорошо не заметил, но спасибо за помощь – opelhatza

Смежные вопросы