2013-03-15 33 views
1

我正在處理一個在數據庫上運行MySQL查詢的項目。我需要將結果反饋給我將在飛行中生成的Excel工作表。我已經啓動了代碼,使用msdn教程以及我在stackoverflow上找到的信息,但是運行該應用程序使我留下了C#生成Excel文件並寫入單元格

「對象引用未設置爲對象的實例。

在這一點上,我剛剛開始了基本代碼,因爲我想在開始在代碼中創建整個電子表格之前完成這項工作。

    var excelApp = new Excel.Application(); 
        excelApp.Visible = true; 
        Excel.Worksheet workSheet = (Excel.Worksheet)excelApp.ActiveSheet; 
        ((Excel.Range)workSheet.Cells[1, 1]).Value = "Print Date:"; 

如果我可以提供任何更多的信息只是問。我非常感謝您提供給我的任何信息或見解!

+0

我想告訴你這一點:如果你正在使用的應用程序將在沒有人隨時參加的情況下使用(例如服務器),那麼你最終會遇到問題。微軟不建議這樣做。 http://support.microsoft.com/kb/257757 – mostruash 2013-03-15 05:37:19

+0

感謝您的意見,但程序將根據需要由用戶運行,而不是自動化。 – eknofsky 2013-03-15 13:28:38

回答

2

我想說workSheet設置爲空,因爲excelApp.ActiveSheet還不存在。

下面是一些代碼,將創建您可以使用一個工作表對象...

var application = new Application(); 

var workbooks = application.Workbooks; 

var workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet); 

var worksheets = (Sheets)workbook.Worksheets; 

var worksheet = worksheets[1]; 

有幾件事情要注意使用Excel工作時:

  • 發佈的每一個對象與System.Runtime.InteropServices.Marshal.ReleaseComObject(object)當你'完成了它。如果你不這樣做,Excel完成後不會退出。
  • 請勿使用雙點引用(即object1.object2.value)。如果你這樣做,你不能像上面那樣正確地釋放它。
  • 索引始終從1開始,而不是0(依我的經驗而定)。
+0

+1爲「兩點」規則。值得注意的是,所有引用也可以設置爲'null',這將有助於垃圾收集。 – 2013-03-16 01:07:05

0

您得到該錯誤的原因是,您尚未在應用程序中創建任何工作表。 嘗試這樣做。

Excel.Worksheet newWorksheet;

newWorksheet =(Excel.Worksheet)excelApp.Worksheets.Add();