webForumDet fria alternativet

Exportera data till excel från databas

9 svar · 826 visningar · startad av mattiasnordin

mattiasnordinMedlem sedan maj 20012 080 inlägg
#1

Hej. Har sökt efter en funktion för att hämta data ifrån en access databas och sedan genom ett ASP skript skapa ett exceldokument från en skapad fråga.

Hur gör man detta på ett vettigt sätt?

tohaMedlem sedan dec. 1999707 inlägg
#2

Jag tycker det är lättast om man skapar ett excel-dokument mha excel/html. Dvs i det formatet som blir om man väljer att spara ett xl-dokument med "Spara som webbsida...". Det är som ett html-dokument med lite extra data.

Det är väldigt enkelt att rendera ut och sen behöver man bara sätta contenttype till:

Response.ContentType = "application/excel"

tohaMedlem sedan dec. 1999707 inlägg
#3

Det här kräver dock att klienten har Excel 2000 eller senare.

mattiasnordinMedlem sedan maj 20012 080 inlägg
#4

Jag provade att köra nedan. Det fungerar men inte perfekt.

<% 'response.write sSql
set rs = connect.execute(sSql)%> 

<% subOutPutExcel %>

<% sub subOutPutExcel 
	' Save it as an .xsl document 
	Response.ContentType = "application/vnd.ms-excel" 
	' List all the chosen columns in the table 
	Response.Write "<table border=1><tr bgcolor=cccccc>" 
	For x = 0 to rs.Fields.Count-1 
		Response.Write "<td>" & rs.Fields(x).Name & " </td>" 
	Next 
	Response.Write "</tr>" 
	While Not rs.EOF 
	' List all the post in the selected columns 
	Response.Write "<tr>" 
	For y = 0 to rs.Fields.Count-1 
	Response.Write "<td>" & rs.Fields(y).Value & " </td>" 
	Next 
	Response.Write "</tr>" 
	rs.MoveNext 
	Wend 
	Response.Write "</table>" 
end sub %>

Excelfilens namn blir samma namn som htmlsidan. Kan man påverka det?

Finns det något bättre sätt att lösa det hela på?

J.N.Medlem sedan apr. 20031 660 inlägg
#5

HEJ!

När jag gör excelfiler gör jag csv-filer, dvs en (komma)separerad fil med värden.

Först skapar jag en fil med FSO, och öppnar den.
Skriver sedan rad efter rad till Rs.EoF med TextStream, med komma, tab eller kolon exempelvis mellan varje rs-värde.

Denna fil skickar jag sedan med epost till mig.

När man öppnar den öppnas den automatiskt i Excel, och med värdena i respektive fält, om man valt rätt delimeter.

tohaMedlem sedan dec. 1999707 inlägg
#6

Jag provade att köra nedan. Det fungerar men inte perfekt.

Jag brukar göra så att jag skapar ett excel-dokoument EXAKT så jag vill ha det. Sparar dokumentet som webbsida. Öppnar dokumentet i en texteditor och klistrar in kod och sätter Do ... Loop-rader om så behövs osv.

Excelfilens namn blir samma namn som htmlsidan. Kan man påverka det?

Call Response.AddHeader("Content-Disposition", "attachment; filename=Report.xls")
mattiasnordinMedlem sedan maj 20012 080 inlägg
#7

tack toha. Det fungerar ju utmärkt!

UrMeMedlem sedan apr. 2001762 inlägg
#8

mattiasnordin skrev:

Excelfilens namn blir samma namn som htmlsidan. Kan man påverka det?

Jag bumpar upp en gammal tråd.. kan man påverka namnet som ges som "förslag" när man ska spara excelfilen?

Tänkte använda samma .asp sida för att generera ut olika excel filer beroende på ett par variabler. Och då vore det bra om man kunde bestämma namnet på något sätt.

EDIT: Hittade svaret som är:

filenamenu = "filnamn-asdd"
Response.Addheader "Content-Disposition", "attachment;Filename=" & filenamenu & ".xls"
skarbrattMedlem sedan juli 2000325 inlägg
#9

Har använd koden ovan, men får ett problem med att Excel arket blir oerhört stort, dvs mid dokument som är på ca 2-3000 rader blir 19MB, kan man få det mer komprimerat?

FraggelMedlem sedan sep. 2003301 inlägg
#10
<%@ Language=VBScript %>
<%
Response.Buffer = True
Response.ContentType = "application/vnd.ms-excel"
Call Response.AddHeader("Content-Disposition", "attachment; filename=Report.xls")
%>
<table border="1">
<tr>
    <th>Column A</th>
    <th>Column B</th>
    <th>Totals Column</th>
</tr>
<tr>
    <td>4</td>
    <td>3</td>
    <td><font color="red">=sum(a2:b2)</font></td>
</tr>
<tr>
    <td>2</td>
    <td>1</td>
    <td><font color="red">=sum(a3:b3)</font></td>
</tr>
</table>

Detta ger önskat resultat men den ger även "Action Canceled" som sida och det ser inte så snyggt ut!
Hur slipper jag det ?
Annars så var detta just det jag letade efter...

140 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
128 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)