C Sharp => InterOp Excel schreiben langsam

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • C Sharp => InterOp Excel schreiben langsam

    Hallo zusammen,

    Ich habe hier eine for Schleife, diese füllt Daten aus einer DataViewGrid (welche Ihre Daten aus einer Datatable zieht) einen Excel Sheet. Es geht um ca. 57 Spalten pro Datensatz und rund 4.000 Datensätze (können auch mal 20.000 sein). Das dauert bei rund 4.000 Datensätze über 10 Minuten.... das geht doch schneller, oder?

    Hier das Stückchen Code, wie würdet ihr das machen um es zu beschleunigen?

    Quellcode

    1. for (int i = 0; i < MyGrid.Rows.Count - 1; i++)
    2. {
    3. for (int j = 0; j < MyGrid.Columns.Count; j++)
    4. {
    5. worksheet.Cells[i + 2, j + 1] = MyGrid.Rows[i].Cells[j].Value.ToString();
    6. if(j == 6)
    7. {
    8. // string hlpNumber = MyGrid.Rows[i].Cells[j].Value.ToString();
    9. // hlpNumber.Remove(5, 10);
    10. //MessageBox.Show(MyGrid.Rows[i].Cells[j].Value.ToString());
    11. // worksheet.Cells[i + 2, j + 1] = hlpNumber.ToString();
    12. }
    13. }
    14. }
    15. ((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 6]).EntireColumn.NumberFormat = "0";
    16. // save the application
    17. workbook.SaveAs(saveFileDialog1.FileName,56, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
    18. // Exit from the application
    19. app.Quit();
    20. }
    Alles anzeigen


    Merci vorab,
    Matthias
    Das Leben ist binär - du bist eine 1, oder eine 0
  • Also ich hab vor nem Monat ca. mittels Qt und deren ActivX Schnittstelle in bezuf auf Excel auch versucht einige Sachen zu realieseren....
    jedoch blieb mein Erfolg in grenzen, da die Performance wie bei dir ziemlich schlecht war, du arbeitest zwar mit .NET die wohl auch über ActivX "kommuniziert".

    Es scheint mir so, dass die ActivX Schnittstelle einfach für dieses vorhaben nicht optimiert wurde.
    Zu dem Thema findet man auch im Internet relativ gar nichts von daher habe ich alles weitere Eingestellt gehabt.

    Mfg Rushh0ur