Excel.Range Copy()的工作速度非常慢

时间:2014-06-04 05:39:14

标签: c# office-interop excel-interop

我正在构建一个报告,尝试复制以下

中的上一行单元格样式
for (int i = 0; i < DataSource.Length; i++)
{
    int rowNumber = i + s;
    Excel.Range RngToCopy = ObjWorkSheet.get_Range("A" + rowNumber.ToString(), "K" + rowNumber.ToString());
    Excel.Range r = ObjWorkSheet.get_Range("A" + (rowNumber + 1).ToString(), "K" + (rowNumber + 1).ToString());
    RngToCopy.Copy(Type.Missing);
    r.Insert(Excel.XlInsertShiftDirection.xlShiftDown);
    r.PasteSpecial(Excel.XlPasteType.xlPasteFormats,
                   Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, false, false);
    ObjWorkSheet.Cells[rowNumber, 1] = i + 1;
    ObjWorkSheet.Cells[rowNumber, 2] = DataSource[i].TerminalName;
    ObjWorkSheet.Cells[rowNumber, 3] = DataSource[i].Type;
    ObjWorkSheet.Cells[rowNumber, 4] = DataSource[i].Requisite;

}

一切都有效,但很长 我怎样才能加快速度呢?

1 个答案:

答案 0 :(得分:0)

我认为你手动复制你会得到改善。

Object[] origData = origRange.Value2;
destRange.Value2 = origData;

这应该更快。