Я хочу в цикле копировать листы в Excel, изменять их и сохранять файл Excel. Я использую C #, Excel через COM. Я прочитал этот пример: Открытие листа MS Excel в C #
У меня есть "исходный" лист. Я хочу в цикле скопировать этот исходный лист, изменить 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();