2010-03-31 149 views
-1

我想編譯下面的代碼,我得到的錯誤:無法創建抽象類的實例

無法創建抽象類的實例。請幫助

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(); 

回答

5

我建議你確定它是打破行...

Abstract類不能直接創建,而不是你需要通過一個派生類中創建一個實例,這就是爲什麼你正在得到例外。

如果您不用try/catch包裝代碼或打開「公共語言運行時例外」(默認快捷方式是VS2008中的Ctrl + E),那麼您應該能夠找到導致問題的線。

我認爲它甚至可能是你的第一線,通常你使用這樣的:

new ApplicationClass(); 
+0

你可以發佈編輯的代碼嗎? – SmartestVEGA 2010-03-31 13:20:50

+0

您需要檢查是否有問題。如果這條線是問題,那麼它可以像m_objExcel = new ApplicationClass()一樣簡單; – Ian 2010-03-31 13:33:21

0

抽象類不能用「新」被實例化。看看錯誤,並看看它的指向是什麼。然後檢查代碼,看看它在做什麼。如果無法確定答案,請發帖。

只是嘗試Excel.Application而不是新的Excel.Application()

+0

m_objExcel = new Excel.Application(); – SmartestVEGA 2010-03-31 13:18:13