Я работаю над приложением, которое необходимо отредактировать файл первенствовать выполняя различные действия, например:C# Microsoft.Office.Interop.Excel v15 медленно
- Copy Paste секции из листа для рабочего листа
- Добавить/Редактировать значения
- формул и макросов работать в фоновом режиме
Это приложение изначально разработан с Excel 2007, но теперь я должен использовать Excel 2013. к сожалению, я заметил, что почти в 10 раз раз медленнее при работе на машине с установленным Excel 2013, а не Excel 2007.
Поэтому я создал очень простое приложение для сравнения, которое произвольно генерирует числа и записывает их в 1000 строк (15).
Результаты неутешительны, поскольку это занимает около 670 миллисекунд, чтобы работать в Excel 2007 и около 3257 миллисекунд для работы в Excel 2013. (это 5x раз медленнее)
Пожалуйста найти код, который дает приведенные выше результаты тестов :
static void Main(string[] args)
{
var stopwatch = new Stopwatch();
stopwatch.Reset();
stopwatch.Start();
var excel = new Application();
excel.Visible = false;
excel.DisplayAlerts = false;
var workbooks = excel.Workbooks;
var workbook = workbooks.Add(Type.Missing);
var worksheets = workbook.Sheets;
var worksheet = (Worksheet)worksheets[1];
WriteArray2(1000, 15, worksheet);
workbook.SaveAs(@"c:\temp\Speedtest.xlsx");
excel.Quit();
stopwatch.Stop();
Console.WriteLine("Time elapsed (milliseconds): "+(stopwatch.ElapsedMilliseconds).ToString());
Console.ReadLine();
return;
}
private static void WriteArray2(int rows, int columns, Worksheet worksheet)
{
var data = new object[rows, columns];
Random r = new Random();
for (var row = 1; row <= rows; row++)
{
for (var column = 1; column <= columns; column++)
{
data[row - 1, column - 1] = r.NextDouble()*2000000-1000000;
}
}
var startCell = (Range)worksheet.Cells[1, 1];
var endCell = (Range)worksheet.Cells[rows, columns];
var writeRange = worksheet.Range[startCell, endCell];
writeRange.Value2 = data;
}
}
У вас были похожие проблемы с Excel 2013? Знаете ли вы, есть ли что-нибудь, что я могу попытаться оптимизировать Excel 2013?
Я знаю, что некоторые люди подняли проблемы с производительностью в Excel 2013, но Microsoft не признала это как факт.
Благодарим за помощь!
Можете ли вы показать медленный код? –
Сколько времени займет ваша цель? –
Теплый запуск: 3257 миллисекунд для запуска в Excel 2013 и 670 миллисекунд для запуска в Excel 2007. – gpanagopoulos