28. juli 2006 - 23:56Der er
3 kommentarer og 1 løsning
eksportere datagridview til excel
Jeg forsøger at eksportere mit datagridview til excel arket på linie 14 kolonne1 og fremefter .
Når jeg forsøger får jeg følgende fejl: Exception from HRESULT: 0x800A03EC. Den fremkommer ellers ikke med nogen data i de felter, jeg har valgt (række 14 kolonne1).
Jeg har endelig fundet noget kode, der virker uden, den går i fejl. MEN jeg har problemet, at jeg i mit datagridview har 5 kolonner. Men den viser kun 4 af dem. Det er faktisk kolonne 4 den ikke viser.
Koden der næsten fungerer: #region Fakturalinier int rIndex = 12; foreach (DataRow row in dtOrdrelinier.Rows) { rIndex++; int cIndex = 0; foreach (DataColumn col in dtOrdrelinier.Columns) { cIndex++; xlApp.Cells[rIndex + 1, cIndex] = row[col.ColumnName].ToString(); } }
}
#endregion
Koden hvor jeg smider de 5 kolonner over i datagridviewet er:
#region FelterIDataGridView // Databinding for the Grid da2 = new OleDbDataAdapter("SELECT Ordre.Antal, Ordre.VareNr, Produkter.Varenavn, Produkter.PrisExMoms FROM Produkter INNER JOIN (Faktura INNER JOIN Ordre ON Faktura.FakturaID = Ordre.FakturaNr) ON Produkter.VareNr = Ordre.VareNr WHERE FakturaID=@fakid", cn);
//create datatable dtOrdrelinier = new DataTable();
//fill datatable da2.Fill(dtOrdrelinier);
//create colum to hold the sum of other two colums DataColumn col = new DataColumn("RaekkeBeloeb"); col.DataType = typeof(System.Decimal); col.Expression = "Antal*PrisExMoms";
//add the colums dtOrdrelinier.Columns.Add(col);
//bind datatable to grid view dgrOrdre.DataSource = dtOrdrelinier; #endregion
Nogen der kan se, hvorfor kolonne 4 (som er Produkter.PrisExMoms fra databasen) ikke bliver eksporteret til excel?
Problemet lå i, jeg havde (for at få design til at passe) merged to celler sammen i de rækker, hvor datagrid'et skulle være. Men der var stadig en kolonne ekstra, som den så lagde den i og dermed skjulte den.
Jeg har omgået problemet ved at lave følgende kode:
#region Fakturalinier int rIndex = 12; foreach (DataRow row in dtOrdrelinier.Rows) { rIndex++; int cIndex = 0; foreach (DataColumn col in dtOrdrelinier.Columns) { cIndex++; if (cIndex == 4) { cIndex++; } xlApp.Cells[rIndex + 1, cIndex] = row[col.ColumnName].ToString(); } } #endregion
simsen :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.