打开预先存在的Excel文件

时间:2015-06-23 19:39:44

标签: c# excel automation excel-interop

我正在尝试从计算机上的目录中打开预先存在的excel文件。但是,当我的代码到达Workbooks.Open方法时,我得到一个COMexception。我不确定我错了什么。任何帮助表示赞赏。

using Microsoft.Office.Interop.Excel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using System.Xml;

namespace Excel_Create
{
    class Program
    {

        static void Main(string[] args)
        {


            string mySheet = @"‪‪‪‪C:\Users\Danny\Documents\Visual Studio 2013\Projects\MWS\MWS\bin\Debug\csharp-Excel.xls";
              Excel.Application xlApp = new Excel.Application();
              xlApp.Visible = true;


              if (xlApp == null)
              {
                  MessageBox.Show("Excel is not properly installed!!");
                  return;
              }



         Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(mySheet,
          0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "",
          true, false, 0, true, false, false              );

        }
    }
}

以下是异常所说的:类型&System; Run.Runtime.InteropServices.COMException'的未处理异常。发生在Excel_Create.exe

其他信息:' C:\ Users \ Danny \ Documents \ Visual Studio 2013 \ Projects \ MWS \ MWS \ bin \ Debug \ csharp-Excel.xls'无法找到。检查文件名的拼写,并验证文件位置是否正确。

3 个答案:

答案 0 :(得分:2)

找到适合我的解决方案:

     var mySheet = Path.Combine(Directory.GetCurrentDirectory(), "Sample.xlsx");
          Excel.Application xlApp = new Excel.Application();
          xlApp.Visible = true;


          if (xlApp == null)
          {
              MessageBox.Show("Excel is not properly installed!!");
              return;
          }

          try
          {
              Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(mySheet);

          }
          catch(Exception ex)
          {
              xlApp.Quit();

          }

答案 1 :(得分:0)

我认为您的文件路径中的空格存在问题。

试试这个,而不是:

string mySheet = @"""C:\Users\Danny\Documents\Visual Studio 2013\Projects\MWS\MWS\bin\Debug\csharp-Excel.xls""";

答案 2 :(得分:0)

你可以试试这个......

Excel.Application excelApp = 
System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");