Avatar billede jhjorsal Mester
27. november 2001 - 09:31 Der er 7 kommentarer og
1 løsning

Excel

Jeg har egentlig spurt om noget lignende i java script afdelingen, men efter at have læst her, har jeg fundet ud af at det nok var her jeg skulle spørge.
Jeg ønsker at exportere nogle data til et excel regneark og har også delvis løst problemet på flg måde:

\' -- Tell the browser the data is a Comma Separated Values List (CSV)
  response.ContentType=\"application/csv\"
\' -- Tell the browser to associate a file name with the data
  Response.AddHeader \"Content-Disposition\", \"filename=TIOS Statistikk.csv;\"
 
  Response.write(\",Avgang fra udgangsstasjon,,,,,Ankomst til endestasjon,,,,\")
  Response.write vbNewLine
  Response.write(\"Tognr, 0 Min; 1-5 Min, 6-15 Min, 16-30 Min, >30 Min, 0-3 Min, 4-5 Min, 6-15 Min, 16-30 Min, >30 Min\")

og det virker jo også fint sålænge clienten bruger et komma som list separator, Jeg har dog forsøgt om man kunne få lov at læse list separatoren i registreringsdatatbsen på clienten, for at kunne bruge den i stedet for,men har kunne konstatere at det må man ikke. Jeg kunne så bede brugeren om at specificere sin List separator, men den tror jeg ikke ret mange anmindelig bruger kender.
Så det jeg ønsker er en løsning hvor jeg specificere den enkelte celle i regnearket og ligger værdien deri,
i stedet for at levere data som en separet liste.
Eller andre gode forslag.
mvh johnny


Avatar billede soerens Nybegynder
27. november 2001 - 11:50 #1
Hmmm, hvis du har \"kontrol\" over din server, så har SoftwareArtisans et komponent der vist kan klare det, og det findes vist oven i købet i en begrænset freeware udgave!

Jeg har INGEN erfaring med det, men du kan finde det her:
http://www.softartisans.com/softartisans/excelwriter.html

/SoerenS
Avatar billede soerens Nybegynder
27. november 2001 - 11:52 #2
4GuysFromRolla.com har også en artikel om det, men det kræver vistnok at Excel er installeret på serveren:

Creating Excel Spreadsheets with Office Web Components (OWC)
http://www.4guysfromrolla.com/webtech/022801-1.shtml

...igen, jeg har INGEN erfaring med det, men håber alligevel det kan hjælpe dig ;-)

/SoerenS
Avatar billede soerens Nybegynder
27. november 2001 - 11:58 #3
Hmmm, ifølge Microsoft kan det også lade sig gøre ved at lave en HTML-Table, og så sætte MIME-typen til et spreadsheet:

HOWTO: Display ASP Results Using Excel in IE with MIME Types
http://support.microsoft.com/support/kb/articles/Q199/8/41.ASP

/SoerenS
Avatar billede jhjorsal Mester
27. november 2001 - 13:33 #4
Tak for svarene
De 2 første generer excel på serveren og distibuere til clienten, også render jeg vist ind i nogle rettighedsproblemer. Men nr 3 var næsten det jeg skulle bruge, jeg kan nu indsætte data ligesom i en tabel. men jeg har ikke mulighed for på client siden at gemme xls filen lokalt, kan man det
mvh Johnny
Avatar billede tmceu Praktikant
29. november 2001 - 05:02 #5
Jeg har lavet noget, som jeg tror du kan bruge, men det er tid til at se dyner. Hvis du stadig mangler det i morgen (i dag) smider jeg lidt kode...
Avatar billede tmceu Praktikant
29. november 2001 - 17:39 #6
Jeg har \"anonymiseret\" denne lidt, men hvis du indsætter din egen connectionstring og SQL statement, kan du udskrive et udtræk fra en database som en Excel fil på klienten. Det kræver ikke Excel på serveren, men naturligvis hos klienten. Browseren vil som udgangspunkt spørge om filen skal åbnes eller gemmes på disken, men dette kan afvige afhængig af brugerens indstillinger.

<%@ Language=VBScript %>
Response.ContentType = \"application/vnd.ms-excel\"

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Set rs = Server.CreateObject(\"ADODB.RecordSet\")

Conn.Open \"MyConnectionString\"

sql = \"SELECT * FROM Table\"


RS.Open sql, Conn

if not RS.EOF then
    Response.Write(\"<TABLE>\")
    Response.Write(\"<TR>\")
    for each item in RS.Fields
        Response.Write(\"<TH align=left bgcolor=gray>\" & item.name & \"</TH>\" & vbcrlf)
    next   
    Response.Write(\"</TR>\")
end if

Do While Not RS.EOF
    Response.Write(\"<TR>\" & vbcrlf)

        for each item in RS.Fields
            if item.type = 200 then
                Response.Write(\"<TD nowrap align=left>=T(\"\"\" & item.value & \"\"\")</TD>\" & vbcrlf)           
            else
                Response.Write(\"<TD nowrap align=left>\" & item.value & \"</TD>\" & vbcrlf)
            end if
        next
        RS.MoveNext
    Response.Write(\"</TR>\" & vbcrlf)
Loop

Response.Write(\"</TABLE>\" & vbcrlf)


if rs.State <> 0 then rs.Close
if Conn.state <> 0 then Conn.Close

%>
Avatar billede jhjorsal Mester
30. november 2001 - 06:53 #7
Tak for hjælpen
mvh johnny
Avatar billede tmceu Praktikant
30. november 2001 - 10:00 #8
Det var så lidt :-)
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