---
title: "Prestandaproblem med excel"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/148117-prestandaproblem-med-excel"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Hyzac"
published: "2006-06-16T06:21:34.000Z"
updated: "2006-06-16T06:47:47.000Z"
replies: 1
views: 285
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/148117-prestandaproblem-med-excel"
---

# Prestandaproblem med excel

## #1 — Hyzac, 2006-06-16T06:21Z

Jag har följande kod som skapar en excel fil från dynamisk data. Problemet är att det tar väldigt lång tid 1min 48s för tusen rader. Sedan ligger processen EXCEL.exe kvar om man kikar i Aktivitetshanteraren fast jag har kod som ska ta bort det. 

Nån som har tips om prestandaökning och processavslut? 

Jag har ersatt vissa av värdena om ni undrar varför det bara står "värde" i insättningen i cellerna, dessa är alla av typen varchar annars så inga speciella datatyper används.

```
Dim oXL As Excel.Application
        Dim oWB As Excel.Workbook
        Dim oSheet As Excel.Worksheet
        'Dim oRng As Excel.Range
        Try
            GC.Collect()
            ' Start Excel and get Application object.
            oXL = New Excel.Application()
            oXL.Visible = True
            oXL.UserControl = True
            Dim oldCI As System.Globalization.CultureInfo = _
                System.Threading.Thread.CurrentThread.CurrentCulture
            System.Threading.Thread.CurrentThread.CurrentCulture = _
                New System.Globalization.CultureInfo("en-US")
            'oXL.Workbooks.Add()
            oWB = oXL.Workbooks.Add(Missing.Value)

            oSheet = oWB.ActiveSheet
            oSheet.Cells(1, 1).Value = "värde"
            oSheet.Cells(1, 2).Value = "värde"
            oSheet.Cells(1, 3).Value = "värde"
            oSheet.Cells(1, 4).Value = "värde"
            oSheet.Cells(1, 5).Value = "värde"
            oSheet.Cells(1, 6).Value = "värde"
            oSheet.Cells(1, 7).Value = "värde"
            oSheet.Cells(1, 8).Value = "värde"
            oSheet.Cells(1, 9).Value = "värde"
            oSheet.Cells(1, 10).Value = "värde"
            oSheet.Cells(1, 11).Value = "värde"
            oSheet.Cells(1, 12).Value = "värde"
            oSheet.Cells(1, 13).Value = "värde"
            oSheet.Cells(1, 14).Value = "värde"
            'oSheet.get_Range("A1", "N1").Font.Bold = True
            'oSheet.get_Range("A1", "N1").ColorIndex = 15
            'oSheet.get_Range("A1", "N1").Pattern = xlSolid
            cmd.Connection.Open()
            Dim myReader As SqlDataReader = cmd.ExecuteReader
            Dim i As Integer = 2
            While myReader.Read
                oSheet.Cells(i, 1).Value = myReader("värde")
                oSheet.Cells(i, 2).Value = myReader("värde")
                oSheet.Cells(i, 3).Value = myReader("värde")
                oSheet.Cells(i, 4).Value = myReader("värde")
                oSheet.Cells(i, 5).Value = myReader("värde")
                oSheet.Cells(i, 6).Value = myReader("värde")
                oSheet.Cells(i, 7).Value = myReader("värde")
                oSheet.Cells(i, 8).Value = myReader("värde")
                oSheet.Cells(i, 9).Value = myReader("värde")
                oSheet.Cells(i, 10).Value = myReader("värde")
                oSheet.Cells(i, 11).Value = myReader("värde")
                oSheet.Cells(i, 12).Value = myReader("värde")
                oSheet.Cells(i, 13).Value = myReader("värde")
                oSheet.Cells(i, 14).Value = myReader("värde")
                i = i + 1
            End While
            myReader.Close()
            myReader = Nothing
            cmd.Connection.Close()

            oWB.SaveAs(filePath, Excel.XlFileFormat.xlWorkbookNormal, Missing.Value, Missing.Value, False, False, Excel.XlSaveAsAccessMode.xlShared, False, False, Missing.Value, Missing.Value, Missing.Value)
            ' Need all following code to clean up and extingush all references!!!
            oWB.Close(Missing.Value, Missing.Value, Missing.Value)
            oXL.Workbooks.Close()
            oXL.Quit()
            'System.Runtime.InteropServices.Marshal.ReleaseComObject(oRng)
            System.Runtime.InteropServices.Marshal.ReleaseComObject(oXL)
            System.Runtime.InteropServices.Marshal.ReleaseComObject(oSheet)
            System.Runtime.InteropServices.Marshal.ReleaseComObject(oWB)
            oSheet = Nothing
            oWB = Nothing
            oXL = Nothing
            GC.Collect() ' force final cleanup!
            System.Threading.Thread.CurrentThread.CurrentCulture = oldCI
            errLabel.Text = "<a href=""fil.xls"" target=""_blank"">H&auml;mta excelfil</a>"
        Catch exc As Exception
            Dim errorMessage As String
            errorMessage = "Fel: "
            errorMessage = String.Concat(errorMessage, exc.Message)
            errorMessage = String.Concat(errorMessage, " Rad: ")
            errorMessage = String.Concat(errorMessage, exc.Source)
            errLabel.Text = errorMessage
        End Try
```

Permalänk: https://www.webforum.nu/p/148117

## #2 — Hyzac, 2006-06-16T06:47Z

Processerna upptäckte jag berodde på att i testerna så hade jag ibland avbrutit körningen och då inte avslutat dem korrekt. Kör man nu så ligger det bara en process hela tiden. Men skulle gärna se lite prestandaökning dock.

Permalänk: https://www.webforum.nu/p/1829772

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/148117-prestandaproblem-med-excel
