Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C#] Excel file exporten met of2k3 PIA

Pagina: 1
Acties:

  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 07-01 13:55

FvH

Aan het typen...

Topicstarter
Ik ben al een tijd bezig met het schrijven van een export functie van gridViews naar een excel file. Ik heb al een aantal methoden geprobeerd, waaronder het outputen van de gegevens middels het response-object mbt content-type application/ms-excel en application/vnd.xls e.d. eigenlijk simpel opgeschreven op de volgende manier:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
protected void BtnExport_Click(object sender, EventArgs e)
{
  Response.Clear();
  Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
  Response.Charset = "";
 
  Response.ContentType = "application/vnd.xls";
  System.IO.StringWriter stringWrite = new System.IO.StringWriter();
  System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
  GridView1.RenderControl(htmlWrite);
  Response.Write(stringWrite.ToString());
  Response.End();
}


Dit voldoet niet en werkt slecht is helaas mijn ervaring. Nu heb ik wel het een en ander gevonden i.z. Office 2003 PIA. Dit zou interop spullen moeten geven om een native excel file te kunnen bouwen. Dit ziet er erg goed uit en biedt de opties die ik eigenlijk nodig heb. Ware het niet, dat ik het voor geen meter aan de gang krijg.

Heeft iemand ervaring hiermee en zou die persoon mij op weg willen helpen? Verder vraag ik me steeds meer af of het wel werkt met asp.net (webpage)... het moet wel vanaf een page aan te roepen zijn.

Of... heeft iemand anders betere ideeen om gridVIews te exporteren naar excel files??

Alvast bedankt voor jullie reacties.

What are clouds made of? Linux servers mostly!


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 19:45

TeeDee

CQB 241

Heart..pumps blood.Has nothing to do with emotion! Bored


  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 07-01 13:55

FvH

Aan het typen...

Topicstarter
Dat zou een optie zijn, maar ik gebruik liever geen 3rd party dlls in dit project. Het zou toch mogelijk moeten zijn om dit te verwezenlijken zonder gebruik van dit soort dll's?

What are clouds made of? Linux servers mostly!


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 19:45

TeeDee

CQB 241

In feite is PIA ook een 3rd party assembly.
Maar, wat heb je eigenlijk zelf al gedaan, gevonden eigenlijk?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • __fred__
  • Registratie: November 2001
  • Laatst online: 29-11 20:34
Naast het feit dat het technisch niet de mooiste oplossing is om een Excel Com object (want dat is wat de Primary Interop Assembly aanroept) te gebruiken achter je webpagina, is het op deze manier automaten van Office volgens de licentievoorwaarden verboden. Ik zou dus een andere oplossing zoeken.

  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 07-01 13:55

FvH

Aan het typen...

Topicstarter
Het punt is dat ik geen unsupported dll wil gebruiken als daar geen source van beschikbaar is. Ik heb eigenlijk alle opties die middels response.etc. werken geprobeerd. Geen van alle kan, wat ik eigenlijk wil. Ik moet namelijk ook content in kleurtjes e.d. op kunnen maken.

De PIA heb ik reeds eerder gebruikt in een oud project wast op .net 1.1 werkte. Windows Form applicatie. Die code wil ik eigenlijk gebruiken, maar het blijkt dat het niet meer werkt op .net 2.x om een of andere reden. Ik zit ook gewoon vast, want ik krijg na setup van de pia de interop spullen niet te zien in mijn com lijstjes in visual studio....

Het mooiste is natuurlijk als ik een stuk code weet te fabrieken wat zonder dlls de excelfile kan bouwen, maar dat schijnt nogal een klus te zijn....

Anyway bedankt. Ik ga nog even verder op zoek.

What are clouds made of? Linux servers mostly!


  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 07-01 13:55

FvH

Aan het typen...

Topicstarter
Ik heb gevonden waardoor mijn response.write methode niet werkte. Of iig deels gevonden. Ik heb nu het volgende opgenomen in mijn code en ik krijg iig niet meer een wazige error

C#:
1
2
3
    public override void VerifyRenderingInServerForm(Control control)
    {
    }


Probleem nu is alleen dat ik een melding krijg:

PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.write(), response.filters, HttpModules, or server trace is enabled.

Tsja... ik gebruik inderdaad een Response.write, maar die staat direct op het onClick event v.d. button....

What are clouds made of? Linux servers mostly!


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 19:45

TeeDee

CQB 241

Mjah, als ik het e.e.a nu goed begrijp:

1: je hebt een form met een button.
2: in de onclick wil je je response.output gaan aanpassen in een application-x/vnd.xls
3: dat zal waarschijnlijk niet gaan omdat je ook nog html output hebt?

Zoiets?

Ik denk dat je beter in de onclick een response.redirect naar een andere pagina kan doen welke alleen je XLS uitpoept.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Verwijzing toevoegen naar de primary interop assemblies, zie http://msdn2.microsoft.co.../aa163987(office.10).aspx:
On the Project menu, click Add Reference. The Add Reference dialog box appears.
Click the COM tab.
Select the Microsoft Word Excel 10.0 Object Library entry in the list of COM type libraries.
Click Select to select the Word object library entry.
En waarschijnlijk heb je er nog een nodig, maar welke kan ik me zo even niet herinneren...

Dan, werken met Excel zelf vanuit .NET: http://www.codeproject.co...elect=2138742&tid=2136399
Pagina: 1