Я работаю над некоторым кодом, в котором мне нужно открыть излишки, изменить некоторые значения ячеек, а затем пересчитать формулы всего файла, чтобы получить два конкретных значения и проинформировать их.
Проблема в том, что мне приходится делать это с большим количеством файлов, все с разными именами и по разным путям, и каждый раз на создание рабочей книги уходит слишком много времени.
Даже работа только с одним Excel занимает несколько секунд, а главное - создание объекта рабочей книги.
Есть ли способ ускорить этот процесс?
Это мой код:
class Program
{
private class MyWorkbook : IDisposable
{
public Workbook Wb { get; set; }
public MyWorkbook(Workbook wb)
{
Wb = wb;
}
public void Dispose()
{
}
}
static void Main(string[] args)
{
Console.WriteLine("Started: " + DateTime.Now.ToString());
int i = 0;
while (i <= 10000)
{
using (MyWorkbook workbook = new MyWorkbook(new Workbook(@"C:\AppData\MyExcels\abcdefg.xlsm")))
{
workbook.Wb.Settings.CreateCalcChain = false;
workbook.Wb.Worksheets[1].Cells["M21"].Value = 5;
workbook.Wb.Worksheets[1].Cells["M22"].Value = 5;
workbook.Wb.Worksheets[1].Cells["M23"].Value = 5;
workbook.Wb.CalculateFormula();
Console.WriteLine(workbook.Wb.Worksheets[1].Cells["L81"].Value);
}
Console.WriteLine("Index: " + i);
i++;
}
Console.WriteLine("Finished: " + DateTime.Now.ToString());
Console.ReadLine();
}
}
ПРИМЕЧАНИЕ. Я использую пользовательский класс, поскольку версия Aspose устарела, а в Workbook отсутствует метод Dispose ().
Спасибо.