猿问

无法使用Excel.Application创建实例

我正在创建一个控制台应用程序,该应用程序从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,但这是行不通的。我不知道要创建新的应用程序还需要做什么。


四季花海
浏览 491回答 3
3回答

天涯尽头无女友

在这行上:Excel.Workbook quizWorkbook =新的xlApp.Workbooks.Open(“-文件位置-”);删除new关键字,因为这是试图从中创建实例的事情xlApp。就像错误中所说的-您xlApp是变量,而不是必须从中创建对象的类型。的返回值xlApp.Workbooks.Open("-file location-");将为Microsoft.Office.Interop.Excel.Workbook。一些更多的信息在这里。有关变量和类型之间差异的信息,请点击此处。变量或多或少是类型的对象。

凤凰求蛊

Excel.Application是一个静态库。new从打开工作簿的语句中删除。顺便说一句,您可能想研究使用EPPlus。这是使用Excel文件的绝佳库。您可以从nuget获取它。

慕哥6287543

在行中Excel.Workbook&nbsp;quizWorkbook&nbsp;=&nbsp;new&nbsp;xlApp.Workbooks.Open("-file&nbsp;location-");您Open用new运算符调用方法。因此,您实际上试图创建new Open()无效的类的实例。你应该用Excel.Workbook&nbsp;quizWorkbook&nbsp;=&nbsp;xlApp.Workbooks.Open("-file&nbsp;location-");它甚至可以编译的原因是&nbsp;C#&nbsp;对待&nbsp;com作为动态类型进行接口,在运行时求值,并且编译器不知道编译期间的状态。
随时随地看视频慕课网APP
我要回答