我就需要編輯像執行各種操作Excel文件的應用程序的工作:C#的Microsoft.Office.Interop.Excel V15慢
-
從工作表
- 複製粘貼部分到工作表
- 添加/編輯值
- 公式和宏在後臺
這是最初使用Excel 2007中開發的應用程序,但我現在要使用Excel 2013年不幸的是跑,我注意到,這幾乎是10倍倍在安裝了Excel 2013的計算機上運行而不是Excel 2007時運行速度較慢。
因此,我創建了一個非常簡單的基準測試應用程序,它隨機生成數字並將它們寫入1000(行)* 15(列)= 15000個單元格中。
的結果是令人失望的,因爲它需要大約670毫秒到Excel 2007和3257左右運行毫秒在Excel 2013年運行(這是5倍倍慢)
請找到,讓上面的基準測試結果的代碼:
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中提出了性能問題,但是微軟並沒有承認這是事實。
感謝您的幫助!
你可以顯示緩慢的代碼? –
需要多長時間? –
熱啓動:在Excel 2013中運行3257毫秒,在Excel 2007中運行670毫秒。 – gpanagopoulos