2011-07-17 45 views
1

創建Excel工作簿的代碼之後添加僅一個片材是這樣我想通過C#

 Excel.Application appC = new Excel.Application(); 
     appC.Visible = true;    
     Excel.Workbook bookC = appC.Workbooks.Add(1); 
     Excel.Worksheet sheetC = bookC.Worksheets.Add(); 
     sheetC.Name = "something"; 

命令Workbook.Add()需要是應該以確定有多少片將在工作簿中創建一個參數.. 。 對?

那麼,爲什麼我會得到2張...一個名爲「東西」,一個名爲「工作表2」? 我在做什麼錯?

回答

3

這是創建Excel應用程序對象並僅用一張工作表打開工作簿並將其命名的代碼如你所願:

Excel.Application appC = new Excel.Application();  
appC.SheetsInNewWorkbook = 1;  
appC.Visible = true;  
Excel.Workbook bookC = appC.Workbooks.Add();  
Excel.Worksheet sheetC = appC.Sheets.get_Item(1); 
sheetC.Name = "name-of-sheet"; 
-1

如果你正在使用VS 2010是指出錯誤,你可以使用下面的代碼到工作表添加到這一點,我已經在VS 2010中嘗試這樣一個工作簿這對我的作品即時通訊使用2007的Excel工作簿項目模板

void AddSheet() 
{ 
OpenFileDialog excelSheetToOpen = new OpenFileDialog(); 
      excelSheetToOpen.Filter = "Excel 97- 2003 WorkBook (*.xls)| *.xls | Excel 2007 WorkBook (*.xlsx) | *.xlsx | All files (*.*)|*.*"; 
      excelSheetToOpen.FilterIndex = 3; 
      excelSheetToOpen.Multiselect = false; 

      Excel.Worksheet ws = Globals.ThisWorkbook.Worksheets.get_Item("RunningParameters"); 


      if (excelSheetToOpen.ShowDialog() == DialogResult.OK) 
      { 

       Excel.Application excelApp = new Excel.Application(); 
       String workbookPath = excelSheetToOpen.FileName; 
       Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(workbookPath); 
       Excel.Sheets excelWorkBookSheets = excelWorkbook.Sheets; 

       Excel.Range _UsedRangeOftheWorkSheet; 


       foreach (Excel.Worksheet _Sheet in excelWorkBookSheets) 
       { 
        if (_Sheet.Name == ws.get_Range("B3").Value) 
        { 
         _Sheet.UsedRange.Copy(); 
         _UsedRangeOftheWorkSheet = _Sheet.UsedRange; 

         Object [,] s = _UsedRangeOftheWorkSheet.Value;       


         Excel.Worksheet _WorkingSheet = Globals.ThisWorkbook.Sheets.Add(ws); 
         _WorkingSheet.Name = "WorkingSheet"; 
         _WorkingSheet.Paste(); 



        } 
       } 

      } 


} 

此代碼是直接從我的projecte提取請安美的代碼需要,希望這將有助於解決您的問題

感謝

+0

感謝您的回覆!但是您確定此代碼只生成一張表嗎? – Karapapas

+0

如果此代碼部分執行一次,它將向工作簿中添加一張Excel表格,如果它運行多次,它將拋出一個異常,表明工作簿中存在另一個表格,並且名稱相同。 – Prabhakantha

+0

我不認爲這個代碼解決了OP的問題... @Prabhakantha也許你可以再看看你的代碼,以及它與*創建*工作簿*包含*只有一張工作表,而不是*添加*一個工作簿到一個*現有* –

2

的參數Workbooks.Add不指定張數。

請參閱the MSDN description的Add方法。

您應該使用常量xlWBATWorksheet而不是「1」。

[我不在工作,沒有Excel方便;它可能是該常數的值實際上是1,在這種情況下,這將不會(功能性)差異。另一種方法是在創建工作簿之前設置SheetsInNewWorkbook屬性,或者在創建工作簿後簡單地刪除不需要的工作表。]

+0

Tnx的答案,你是正確的加里麥吉爾我發現,在這種方式...我知道的MSDN描述,但它並不是非常有用..它說, SheetsInNewWorkbook屬性是這樣的,但對於像我這樣的新手用戶來說,這根本沒有幫助,我怎麼知道SheetsInNewWorkbook是應用程序的一個屬性,而不是工作簿或工作表..花了我2個小時才發現..這就是爲什麼我發佈這裏的問題.. msdn肯定需要更多的描述,更清晰,每個類,方法,屬性至少有一個例子。再次感謝我將盡快發佈代碼! – Karapapas

0

我面臨同樣的問題。您需要添加如下表格:

//add 1 sheet 
_workbookTemp.Sheets.Add(Type.Missing, Type.Missing, 1, Type.Missing); 

//move this sheet to the last position 
_workbookTemp.ActiveSheet.Move(After: _workbookTemp.Sheets[_workbookTemp.Sheets.Count]);