C# 如何使用Office interop正确复制Excel工作表?

C# 如何使用Office interop正确复制Excel工作表?,c#,.net,excel,com,interop,C#,.net,Excel,Com,Interop,我想在一个循环中复制excel中的工作表,修改它们并保存excel文件。我通过COM使用C、Excel。我读过这个例子: 我有一个源工作表。我希望在循环中复制源工作表,修改3个单元格,更改名称并在源工作表后追加 我的问题是,在第二次迭代中,源工作表不存在。在本例中,1.Babimost-miasto。它说:找不到索引。我猜他把它复制到了1.Babimost-miasto 2。但是我做错了什么,我怎样才能做到这一点呢 //Get a new workbook. //oWB = (Excel._Wo

我想在一个循环中复制excel中的工作表,修改它们并保存excel文件。我通过COM使用C、Excel。我读过这个例子:

我有一个源工作表。我希望在循环中复制源工作表,修改3个单元格,更改名称并在源工作表后追加

我的问题是,在第二次迭代中,源工作表不存在。在本例中,1.Babimost-miasto。它说:找不到索引。我猜他把它复制到了1.Babimost-miasto 2。但是我做错了什么,我怎样才能做到这一点呢

//Get a new workbook.
//oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));
oWB = (Excel._Workbook)(oXL.Workbooks.Open(outputFilePath));

//this is source
oSheet = (Excel.Worksheet)oWB.Worksheets["1.Babimost-miasto"];
//oSheet.Copy(Type.Missing, oSheet);

for (int i = 0; i < 5; i++)
{
    //i want a copy
    Excel._Worksheet oSheetCopy = (Excel._Worksheet)oWB.Worksheets["1.Babimost-miasto"];
    //give this copy a new name
    oSheetCopy.Name = (input[i] as OrderedDictionary)[KEY_CITY].ToString();
    //modify in the copy some cells
    oSheetCopy.Cells[1, 1].Value = (input[i] as OrderedDictionary)[KEY_CITY]; //A1
    oSheetCopy.Cells[5, 4].Value = (input[i] as OrderedDictionary)[KEY_2010]; //D5
    oSheetCopy.Cells[45, 2].Value = (input[i] as OrderedDictionary)[KEY_1995]; //B45

    //((Excel._Worksheet)oWB.Sheets["MyTemplate"]).Delete(); // delete template
    //copy the copy after my source worksheet
    oSheetCopy.Copy(Type.Missing, oSheet);
    ((Excel._Worksheet)oWB.Worksheets[(input[0] as OrderedDictionary)[KEY_CITY].ToString()]).Activate();
}

oXL.UserControl = false;
oXL.DisplayAlerts = false;
oWB.Save();

你的头衔让我哭泣。你认为你可以编辑,使它成为一个问题,而不是一系列的标签吗?你复制到自己的工作表,在这个过程中改变了名称。使用工作表。添加我认为。在尝试访问它之前,您应该检查是否存在。好的,我按照Hans的建议使用了工作表。添加,然后从源工作表中选择一个范围,并将该范围复制到添加的工作表中。