2016-03-30 297 views
1

嗨,我尝试使用Excel文件和C#。现在我可以使用xlsx文件并打开它等等。但是,当我将其更改为xlsm文件时,我总是得到一个例外,即找不到的文件,我不知道为什么。这里是我的代码: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。所以任何帮助都会很棒。所以我试图谷歌和一些博客,但没有为我工作。 Mabey有我没有得到的东西....

感谢您的时间和对我的英语感到抱歉。

+0

请添加完整的异常消息到您的文章。 – Sybren

+1

是不是就像在Application.StartupPath和文件名之间缺少\一样简单?异常中的路径似乎缺少\。 – DoctorMick

+0

@DoctorMick以及thx这是我没有注意到的事情.....,它的工作原理.... – opelhatza

回答

0

你的路径必须

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

Debug

修复不

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

添加\这一行:

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