---
title: "exportera dataset/datagrid till excel"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/122774-exportera-dataset-datagrid-till-excel"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Mc Fetto"
published: "2005-02-18T19:50:15.000Z"
updated: "2005-02-23T22:27:56.000Z"
replies: 12
views: 377
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/122774-exportera-dataset-datagrid-till-excel"
---

# exportera dataset/datagrid till excel

## #1 — Mc Fetto, 2005-02-18T19:50Z

Jag behöver tips, länkar eller konkreta kodexempel på hur jag kan skapa ett excel-dokument genom att gå igenom ett dataset/datagrid (cell för cell) och lägga till dessa i ett excel-dokument. Jag vill inte spara ner datan som en fil. Tacksam för hjälp!

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

## #2 — Nöff, 2005-02-18T21:05Z

Här har du lite att läsa:

<http://support.microsoft.com/kb/316934>

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

## #3 — Mc Fetto, 2005-02-19T10:43Z

tackar, med den länken hittade jag en annan: <http://support.microsoft.com/kb/302096/EN-US/> 
Som jag gör nu så loopar jag igenom datasetet, och lägger datan i en object-matris. Har ni tips på smidigare sätt så hojta till. :)

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

## #4 — Nöff, 2005-02-19T14:15Z

men vad du ska krångla till allting hörrö, den där länken använder ju COM för att komma åt excel filen, ADO.NET har så att man kan komma åt grejerna ändå. :)
gör såhär istället att loopa igenom tabellernas kolumner i dataset:et, skapa en text som skapar tabellerna i excel arket CREATE TABLE och skjut iväg det med ett command objekt mot excefilen ... . . . . . .
och sen använder du en dataadapter som mappar dataset:ets kolumner mot det nyligen gjorda exceltabellerna.

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

## #5 — clarkbones, 2005-02-23T17:32Z

Så här gör jag när jag skall skriva till excel. Jag tycker i a f att det är enkelt. Fattar inte Nöffs sista sätt, så det får han gärna förklara ytterligare. Kanske är det bättre än mitt.

1\. Lägg till en referens till excel. Finns under com.

Sedan är det bara att koda på.    

```
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim oExcel As New Excel.Application
        ' Dim oSheet As Excel.Worksheet
        Dim oDataset As DataSet
        Dim iRow As Integer
        Dim iCol As Integer
       
'Måste gå över till engelska inställningar om man kör 'Engelskt med svenska i Regional Settings  
        Threading.Thread.CurrentThread.CurrentCulture = Globalization.CultureInfo.CreateSpecificCulture("en-US")
  
        oExcel.Workbooks.Add()
   
       oExcel.ActiveWorkbook.Sheets(1).range("a1").select()

        oExcel.Visible = True
        For iRow = 0 To oDataset.Tables(0).Rows.Count - 1
            For iCol = 0 To oDataset.Tables(0).Columns.Count - 1
                oExcel.ActiveCell.Offset(iRow, iCol).Value = oDataset.Tables(0).Rows(iRow).Item(iCol)
            Next
        Next

'Gå tillbaka till svenska
        Threading.Thread.CurrentThread.CurrentCulture = Globalization.CultureInfo.CreateSpecificCulture("sv-SE")
    End Sub
```

Detta är grundprincipen...

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

## #6 — Gladh, 2005-02-23T17:55Z

> Så här gör jag när jag skall skriva till excel. Jag tycker i a f att det är enkelt. Fattar inte Nöffs sista sätt, så det får han gärna förklara ytterligare. Kanske är det bättre än mitt.

Det finns drivrutiner till ADO som gör att du kan ha EXECL som din "databas". Alltså fungerar "alla" SQL kommando mot EXECL filen. Det betyder att du kan använda SELECT för att hämta data, INSERT för att sätta in data och CREATE för att skapa en ny "tabell" i ditt EXCEL ark.

\- M

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

## #7 — Mc Fetto, 2005-02-23T17:55Z

Japp, ungefär på samma sätt som jag gör, här kommer liten snipp: 

```
range = objSheet.get_Range("A2", Missing.Value);
range = range.get_Resize(Rows, columns.Count);            

object[,] saRet = new object[Rows, columns.Count];
    
for (int i=0;i<Rows;i++)
    for (int k = 0; k<columns.Count;k++)
        if (columns.Contains(k))
            saRet[i,k] = _grid[i, k]; 

range.set_Value(Missing.Value, saRet );              

objApp.Visible = true;
```

Nöff du får gärna upplysa oss mer :)

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

## #8 — Dino, 2005-02-23T18:14Z

Ta en titt på Carlos Aguilar Mares [ExcelXmlWriter](http://www.carlosag.net/Tools/ExcelXmlWriter/Default.aspx) och [ExcelXmlWriter Code Generator](http://www.carlosag.net/Tools/ExcelXmlWriter/Generator.aspx). Kan nog vara till användning.

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

## #9 — clarkbones, 2005-02-23T18:16Z

> **Gladh skrev:**
>
> > Så här gör jag när jag skall skriva till excel. Jag tycker i a f att det är enkelt. Fattar inte Nöffs sista sätt, så det får han gärna förklara ytterligare. Kanske är det bättre än mitt.
>
> 
> Det finns drivrutiner till ADO som gör att du kan ha EXECL som din "databas". Alltså fungerar "alla" SQL kommando mot EXECL filen. Det betyder att du kan använda SELECT för att hämta data, INSERT för att sätta in data och CREATE för att skapa en ny "tabell" i ditt EXCEL ark.
> 
> \- M

OK, var det det han menade. Det har jag ju gjort själv en gång...dock körde jag bara en SELECT. Skall man bara skriva ut data i Excel känns mitt exempel smidigare.

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

## #10 — clarkbones, 2005-02-23T18:19Z

> **Mc Fetto skrev:**
>
> Japp, ungefär på samma sätt som jag gör, här kommer liten snipp: 
>
> ```
> range = objSheet.get_Range("A2", Missing.Value);
> range = range.get_Resize(Rows, columns.Count);            
> 
> object[,] saRet = new object[Rows, columns.Count];
>     
> for (int i=0;i<Rows;i++)
>     for (int k = 0; k<columns.Count;k++)
>         if (columns.Contains(k))
>             saRet[i,k] = _grid[i, k]; 
> 
> 
> range.set_Value(Missing.Value, saRet );              
> 
> objApp.Visible = true;
> ```
>
> Nöff du får gärna upplysa oss mer :)

Släng in en 
application.screenupdating=false 
så får du bättre prestanda
I slutet slår du på den igen:
application.screenupdating=true

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

## #11 — Mc Fetto, 2005-02-23T18:38Z

> **clarkbones skrev:**
>
> Släng in en 
> application.screenupdating=false 
> så får du bättre prestanda
> I slutet slår du på den igen:
> application.screenupdating=true

Tackar, ska prova det imorgon! :bire

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

## #12 — Mc Fetto, 2005-02-23T20:49Z

Som det är nu, så formateras data till det fomat som verkar lämpligt, men hur sätter jag formatet på en kolumn? Har en del siffervärde som ska vara text och ine siffervärde i excel, även datumformatering är önskvärt. Detta borde ju vara busenkelt, men excel api'et är ju rätt omfattande :)

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

## #13 — clarkbones, 2005-02-23T22:27Z

> **Mc Fetto skrev:**
>
> Detta borde ju vara busenkelt, men Excel api'et är ju rätt omfattande :)

Det är busenkelt, spela in ett makro där du gör formateringen. Om du formaterar en kolumn för text
så skall du ha följande tror jag:

MyExcelApplication.columns("A:A").NumberFormat="@"

Dock verkar det som om formatkoderna kan skilja sig mellan .NET och excel så man får hålla tungan i rätt mun...

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/122774-exportera-dataset-datagrid-till-excel
