无法使用Excel.Application创建实例

时间:2018-04-19 22:40:37

标签: c# excel object

我正在创建一个控制台应用程序,可以从Excel文件中随机选择问题和答案。下面是我的代码(完全没有完整)。

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

namespace QuizMaker
{
    class Program
    {
        static void Main(string[] args)
        {
            int numCorrectA;
            int numTotalQ;
            decimal score;
            List<string> qArray = new List<string>();
            List<string> aArray = new List<string>();

            Excel.Application xlApp = new Excel.Application();
            Excel.Workbook quizWorkbook = new xlApp.Workbooks.Open("-file location-");

            //read random line from excel file for 6 questions

            //print out questions

            //console.readline() for the answers

            //check answers b ycomparing them

            //increment ints as needed

            //output results


        }
    }
}

所以我通过调用xlApp接口创建了Application,但是当我在下面的行中使用xlApp时,我会遇到“是一个变量但是像输入“错误。在查找之后,似乎接口不会创建实例,因此这就是原因。但是,我试图创建另一个类来实现Excel.Application,但这不起作用。我不明白为了让我创建一个新的应用程序我还需要做什么。

3 个答案:

答案 0 :(得分:1)

在这一行:

  

Excel.Workbook quizWorkbook = new xlApp.Workbooks.Open(&#34; -file   位置 - &#34);

删除new关键字,因为这是尝试从xlApp创建实例的事情。正如错误所述 - 您的xlApp是一个变量,而不是您必须从中创建对象的类型。

xlApp.Workbooks.Open("-file location-");的返回值为Microsoft.Office.Interop.Excel.Workbook

更多info here

关于变量和类型之间差异的信息 - here。或多或少变量 type 的对象。

答案 1 :(得分:0)

Excel.Application是一个静态库。从打开工作簿的语句中删除new

顺便说一下,您可能希望了解如何使用EPPlus。这是一个使用Excel文件的好库。你可以从nuget那里得到它。

答案 2 :(得分:0)

在第

Excel.Workbook quizWorkbook = new xlApp.Workbooks.Open("-file location-");

您使用Open运算符调用方法new。所以你基本上试图创建无效的类new Open()的实例。你应该使用

Excel.Workbook quizWorkbook = xlApp.Workbooks.Open("-file location-");

它甚至编译的原因是接口视为dynamic类型,它们在运行时进行评估,编译器在编译期间不知道它是什么。< / p>