使用列表C#命名excel表

时间:2016-07-18 17:53:08

标签: c# excel

我正在尝试在excel工作簿中创建12个新工作表。然后,我想将每张表的名称更改为一个月的名称(1月 - 12月)。

代码:

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)

一个完整的例子看起来像这样......

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

除了变量命名("sheet" + i)之外,一切正常。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

在您的代码中,您有:

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

在示例中,他们确实使用了一个名为sheet0的变量,但您并不需要严格遵循它。变量可以包含mySheetnextSheet等任何名称。

你不需要尝试&#34;构建&#34;一个带编号的变量名,如"sheet"+i。更重要的是,这只会无法正常工作。请注意sheet0是一个完整的变量名称。 0是名称的一部分,没有"(引号)而没有&#34;添加&#34;变量名的数字。你不能创造&#34;这样的新变量。

相反,只需选择任何正常名称:

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

它在循环内部并不重要。每次循环迭代时,都会使用相同的变量名称,并将不同的表格放入其中。使用单个变量来检查和通过循环更改一百张纸是没有问题的。

答案 1 :(得分: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];
}