Avatar billede weiland Nybegynder
22. august 2002 - 09:10 Der er 12 kommentarer og
1 løsning

Generering af csv-fil via ASP

Hej

Jeg forsøger at gøre det muligt for brugeren at downloade en kommasepareret fil fra en ASP-side. Jeg er kommet frem til nedenstående, men det virker ikke!
Hvad skal laves om?

<%@ Language=VBScript %>
<%
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "Content-Disposition", "filename=data.csv;"

'der skabes forbindelse (MyConn) til databasen

SQL = "SELECT * FROM Konferencer_deltagere WHERE KonferenceID = 2"
Set rs = MyConn.Execute(SQL)

    'den første række med kolonneoverskrifterne
    response.write "ID,Fornavn,Efternavn,Adresse,Stilling"
    Response.Write vbNewLine
   
    while not rs.eof
            response.write rs("ID") & ","
            response.write rs("Fornavn") & ","
            response.write rs("Efternavn") & ","
            response.write rs("Adresse") & ","
            response.write rs("Stilling") & ","
           
            Response.Write vbNewLine
    rs.MoveNext
    wend
   
rs.Close
Set rs = Nothing

'forbindelsen til databasen adbrydes
%>
Avatar billede neteffect Nybegynder
22. august 2002 - 09:27 #1
Hvad er det mon, der ikke virker?

Anyway, der kommer et komma for meget efter du skriver Stilling.

Brug vbCrLf i stedet for vbnewline
Avatar billede weiland Nybegynder
22. august 2002 - 09:34 #2
Tak for kommentaren.

Det virker ikke, fordi jeg gemmer ovenstående som - lad os sige test.asp - og når jeg så kalder siden i browseren, så vises alle dataene blot i browseren.

Det er der ikke meget sjov ved... :-)
Avatar billede neteffect Nybegynder
22. august 2002 - 10:26 #3
Nåh, det er da ikke så galt endda.

Send data til
<div style="background-color:white"><pre>
... data ...
</pre></div>

og lad brugeren kopiere indholdet over i en lokal txt- eller csv-fil.
Avatar billede neteffect Nybegynder
22. august 2002 - 10:28 #4
Husk forresten at sætte quotes omkring, så fx adresse kan indeholde komma, dvs

response.write """" & rs("Adresse") & ""","
Avatar billede luzk Nybegynder
22. august 2002 - 10:53 #5
hvis du vil have en fil folk skal downloade, skal du benytte dig af FileSystemObjectet, hvor du gemmer en fil, fx med nuværende tidspunkt som filnavn. Tilsidst i din genereringsside laver du et link til den nyligt genererede side, som brugeren kan klikke på, og derved downloade. Husk når du laver dynamisk fremstillede filer, skal du rydde op en gang imellem :o)
Avatar billede slamsuger Nybegynder
22. august 2002 - 11:17 #6
Prøv følgende:

<%@ Language=VBScript %>
<%
Response.ContentType = "application/ms-excel"
Response.AddHeader "Content-Disposition", "filename=data.csv;"
Response.BinaryWrite("10;20;30")
%>

-- det virker for mig ;=)
Avatar billede bocker Nybegynder
22. august 2002 - 11:30 #7
Jeg har en idé til dig :)

Sæt ASPSmartUpload til at "downloade" filen for brugeren. Du kan hente den gratis på www.aspsmart.com, hvor du også kan finde eksempler m.m. Det har jeg brugt til samme formål i et projekt :)
Avatar billede weiland Nybegynder
22. august 2002 - 11:47 #8
Hej

Jeg har prøvet lidt af hvert nu... Men er endt med den løsning, at jeg skriver dataene ud i en html-tabel i browseren.
Herefter skal brugeren vælge "Rediger med Excel", som jo er en funktion i Explorer.
Det virker faktisk fint, men er selvfølgelig knap så elegant som csv-løsningen, som jeg pinedød ikke kunne få til at fungere....
Avatar billede slamsuger Nybegynder
22. august 2002 - 12:07 #9
Weiland: hvorfor bruger du ikke min løsning... den virker jo !
Avatar billede weiland Nybegynder
22. august 2002 - 12:34 #10
slamsuger:

Jeg har prøvet følgende, som ikke virker. Jeg kan dowloade en csv fil fra browseren, men når jeg så åbner den med Excel, så kan den ikke genkende fil-formatet.

<%@ Language=VBScript %>
<%
Response.ContentType = "application/ms-excel"
Response.AddHeader "Content-Disposition", "filename=data.csv;"
Response.BinaryWrite("10;20;30")
%>



<%

'forbindelse åbnes

SQL = "SELECT * FROM Konferencer_deltagere WHERE KonferenceID = 2"
Set rs = MyConn.Execute(SQL)

    'den første række med kolonneoverskrifterne
    response.write "ID,Fornavn,Efternavn,Adresse,Stilling"
    Response.Write vbCrLf
   
    while not rs.eof
        response.write rs("ID") & ","
                response.write rs("Fornavn") & ","
                response.write rs("Efternavn") & ","
                response.write rs("Adresse") & ","
                response.write rs("Stilling")           
                Response.Write vbCrLf
    rs.MoveNext
    wend

rs.Close
Set rs = Nothing

'forbindelse lukkes

%>
Avatar billede slamsuger Nybegynder
22. august 2002 - 12:50 #11
ok, sorry, mindre tanketorsk fra min side, prøv den her (værdier skal quoutes) ::
<%@ Language=VBScript %>
<%
Response.ContentType = "application/ms-excel"
Response.AddHeader "Content-Disposition", "filename=data.csv;"
Response.Write("""10"";""20"";""30""" &Chr(10) &Chr(13) )
%>

og så vælg "open" når "download" dialogen åbner ...

Hilsen
SlamSuger
Avatar billede slamsuger Nybegynder
22. august 2002 - 12:53 #12
og så er det vist CR LF og ikke omvendt ::))

Response.Write("""10"";""20"";""30""" &Chr(13) &Chr(10) )
Avatar billede weiland Nybegynder
22. august 2002 - 13:09 #13
Slamsuger:

Tusind tak!! Det virker søreme!!
Der skulle sæføli også lige semikolon imellem værdierne.....
Her er den funktionsdygtige kode:

<%@ Language=VBScript %>
<%
Response.ContentType = "application/csv"
Response.AddHeader "Content-Disposition", "filename=data.csv;"
Response.Write("""ID"";""Fornavn"";""Efternavn"";""Adresse"";""Stilling""" &Chr(13) &Chr(10) )
%>


<%

'forbindelse åbnes

SQL = "SELECT * FROM Konferencer_deltagere WHERE KonferenceID = 2"
Set rs = MyConn.Execute(SQL)

 
   
    while not rs.eof

        response.write rs("ID") & ";"
        response.write rs("Fornavn") & ";"
            response.write rs("Efternavn") & ";"
            response.write rs("Adresse") & ";"
            response.write rs("Stilling")           
            Response.Write vbCrLf

    rs.MoveNext
    wend

rs.Close
Set rs = Nothing

'forbindelse lukkes

%>
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester