Я хотел бы вставить текст в заголовок КАЖДОГО листа в Excel. К сожалению, это занимает очень много времени. Я попробовал две петли: foreach и для. Ниже приведен простой код, который я использую с секундомером. Похоже, Excel требуется около 0,7 сек для одного листа. Даже если в цикле ОДИН лист, это займет 0,5 сек. и чем больше листов будет открыто, тем дольше будет петля для всех. Конечно, случай с одним листом просто для того, чтобы представить ситуацию. Для 10 листов это занимает 7,5 секунд, и мне нужно делать это каждый раз, когда пользователь сохраняет рабочую книгу. С включенной опцией автосохранения это может быть сложно.
Я верю, что есть другая возможность сделать это, но я не могу найти никакого решения. Я читал о сортировке, но 7,5 секунд? Возможно, есть что-то такое, как быстрая встроенная множественная вставка, например, AllSheets.PageSetup.LeftHeader?
Можете поделиться своим опытом по этой теме?
//aWb is an Active WorkBook
Stopwatch sw = new Stopwatch();
sw.Start();
foreach (Excel.Worksheet ew in aWb.Worksheets) //7:541 for 10 sheets
{
ew.PageSetup.LeftHeader = "LeftHeader";
}
sw.Stop();
MessageBox.Show("Foreach: " + sw.Elapsed.Seconds + ":" + sw.Elapsed.Milliseconds);
sw.Reset();
sw.Start();
for (int x = 1; x <= Application.Sheets.Count; x++) //7:318 for 10 sheets
{
aWb.Sheets[x].PageSetup.LeftHeader = "LeftHeader";
}
sw.Stop();
MessageBox.Show("For: " + sw.Elapsed.Seconds + ":" + sw.Elapsed.Milliseconds);