Невозможно создать экземпляр абстрактного класса - PullRequest
0 голосов
/ 31 марта 2010

Я пытаюсь скомпилировать следующий код и получаю сообщение об ошибке:

Невозможно создать экземпляр абстрактного класса. Пожалуйста, помогите

m_objExcel = new Excel.Application();
m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));
m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));

// Create an array for the headers and add it to cells A1:C1.
object[] objHeaders = {"Order ID", "Amount", "Tax"};
m_objRange = m_objSheet.get_Range("A1", "C1");
m_objRange.Value = objHeaders;
m_objFont = m_objRange.Font;
m_objFont.Bold=true;

// Create an array with 3 columns and 100 rows and add it to
// the worksheet starting at cell A2.
object[,] objData = new Object[100,3];
Random rdm = new Random((int)DateTime.Now.Ticks);
double nOrderAmt, nTax;
for(int r=0;r<100;r++)
{
    objData[r,0] = "ORD" + r.ToString("0000");
    nOrderAmt = rdm.Next(1000);
    objData[r,1] = nOrderAmt.ToString("c");
    nTax = nOrderAmt*0.07;
    objData[r,2] = nTax.ToString("c");
}
m_objRange = m_objSheet.get_Range("A2", m_objOpt);
m_objRange = m_objRange.get_Resize(100,3);
m_objRange.Value = objData;

// Save the Workbook and quit Excel.
m_objBook.SaveAs(m_strSampleFolder + "Book2.xls", m_objOpt, m_objOpt,
    m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,
    m_objOpt, m_objOpt, m_objOpt, m_objOpt);
m_objBook.Close(false, m_objOpt, m_objOpt);
m_objExcel.Quit();

Ответы [ 2 ]

5 голосов
/ 31 марта 2010

Я бы посоветовал вам определить линию, где она ломается ...

Абстрактные классы не могут быть созданы напрямую, вместо этого вам нужно создать экземпляр через производный класс, поэтому вы получаете исключение.

Если вы не переносите код с помощью try / catch или не включаете «Исключения времени выполнения для общего языка» (по умолчанию это сочетание клавиш Ctrl + E в VS2008), тогда вы сможете найти строку, вызывающую проблему.

Я думаю, что это может быть даже ваша первая строка, обычно вы используете что-то вроде:

new ApplicationClass();
0 голосов
/ 31 марта 2010

Абстрактные классы нельзя создавать с помощью «new». Посмотрите на ошибку и посмотрите, на какую линию она указывает. Затем проверьте код, чтобы увидеть, что он делает. Отправьте строку, если вы не можете определить ответ.

просто попробуйте Excel.Application вместо нового Excel.Application ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...