2016-07-18 80 views
0

我想在Excel工作簿中創建12個新工作表。然後,我想將每個表格的名稱改爲一個月的名稱(1月 - 12月)。使用列表命名Excel表單C#

代碼:

List<string> Months = new List<string> { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; 
for (int i = 0; i < Months.Count; i++) 
      { 
       Microsoft.Office.Interop.Excel.Worksheet "sheet" + i = (Worksheet)xlApp.Worksheets["Sheet" + (i+1)]; 
       "sheet" + i.Name = Months[i]; 
      } 

至於紙張的變量名,我想每個命名工作表"sheet" + i (a number 0-11)。除了變量命名("sheet" + i)

完整的例子是這樣的......

Microsoft.Office.Interop.Excel.Worksheet sheet0 = (Worksheet)xlApp.Worksheets["Sheet1"]; 
      sheet0.Name = "Jan"; 

,一切工作正常。有什麼建議麼?

+0

你'「表」 + i.Name'這是試圖引用變量'我'好像它擁有'Name'屬性,而不是你想要完成的事情(我認爲)。 – gravity

+0

@gravity哦,好的。這不是我想要做的。我想命名工作表''工作表'+ i'。然後我想改變那張紙的名字......你知道我該怎麼做嗎? – Michael

回答

2

在您的代碼,您有:

Microsoft.Office.Interop.Excel.Worksheet "sheet" + i = (.....) 
"sheet" + i.Name = Months[i]; 

在他們確實使用了一種叫做sheet0變量的例子,但你並不需要遵循這麼嚴格。變量可以有任何名稱,如mySheetnextSheet

您不需要嘗試「編譯」一個編號的變量名稱,如"sheet"+i。甚至更多,這將只是不工作。請注意0​​是一個完整的變量名稱。 0是名稱的一部分,沒有"(引號),也沒有向變量名稱「添加」一個數字。你不能以這種方式「創造」新的變量。

相反,隨便挑任何正常名:

for(....) 
{ 
    Microsoft.Office.Interop.Excel.Worksheet justOneOfTheSheetsAtTime = (.....) 
    justOneOfTheSheetsAtTime.Name = Months[i]; 
} 

沒關係,這是一個循環中。每次循環迭代時,都將使用相同的變量名稱,並將放入不同的表格。使用單個變量檢查​​&通過循環更改一百張紙張沒有問題。

+0

非常感謝!我沒有意識到我可以重複使用同一個名字。 – Michael

1

我可以證實,這爲我工作的成功,對你的意見想要的東西快速驗證後:

List<string> Months = new List<string> { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; 

Application xlApp = new Application(); 
Workbook bkMonths = xlApp.Workbooks.Add(); 
xlApp.Visible = true; 

for (int i = 0; i < Months.Count; i++) 
{ 
    Worksheet sheetCurrent = xlApp.Worksheets.Add(); 
    sheetCurrent.Name = Months[i]; 
}