Toon posts:

[ASP/VBScript]CreateObject

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zou verschillende tabellen willen exporteren vanuit een SQL Server DB naar Excel. Ik moet meerdere tabellen exporteren, dus ben ik op zoek gegaan naar code om in Excel voor elke tabel een nieuwe sheet te gebruiken. een XML-oplossing zag ik niet zitten. Maar ik heb volgende code gevonden;

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<script language='VBScript'>
Dim Xcl
 
Sub StartExcel()
    Set Xcl = CreateObject("Excel.Application")
    Xcl.Visible = true
    Set newBook = Xcl.Workbooks.Add

    newBook.Worksheets(1).Activate
    newBook.Worksheets(1).Columns("A").columnwidth=50
    newBook.Worksheets(1).Columns("A").WrapText = True
    newBook.Worksheets(1).Columns("B").columnwidth=50
    newBook.Worksheets(1).Columns("B").WrapText = True
    newBook.Worksheets(1).Range("A1:B1000").NumberFormat = "0"
    newBook.Worksheets(1).Range("A1:B1000").HorizontalAlignment = -4131

    newBook.Worksheets(1).Cells(1,1).Interior.ColorIndex="15"
    newBook.Worksheets(1).Cells(1,1).value="First Column, First Cell"
    newBook.Worksheets(1).Cells(2,1).value="First Column, Second Cell"
    newBook.Worksheets(1).Cells(1,2).value="Second Column, First Cell"
    newBook.Worksheets(1).Cells(2,2).value="Second Column, Second Cell"
    newBook.Worksheets(1).Name="My First WorkSheet"

    fname=Xcl.GetSaveAsFilename("Testing Excel Extraction.xls")
    if fname = "False" then
        fname="Testing Excel Extraction.xls"
    end if
    newBook.SaveAs fname
    Set Xcl = nothing
    Location.Href="http://www.greggriffiths.org/index.html"
end Sub
</script>
<body onload="StartExcel()">


Bovenstaande code werkte perfect. Nu heb ik iets geprobeerd, maar ik weet niet of dat zomaar mag. Ik heb het aangepast naar het volgende. (ik werk liever met de <% ... %>)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Export</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<!--<script language='VBScript'>-->

<!--</script>-->

    
<body>

<%
Dim Xcl

StartExcel
 
Sub StartExcel()
    Set Xcl = CreateObject("Excel.Application")
    Xcl.Visible = true
    Set newBook = Xcl.Workbooks.Add
    
    'nieuw Excel-sheet aanmaken
    newBook.Worksheets.Add
    
    newBook.Worksheets(1).Activate
    newBook.Worksheets(1).Columns("A").columnwidth=50
    newBook.Worksheets(1).Columns("A").WrapText = True
    newBook.Worksheets(1).Columns("B").columnwidth=50
    newBook.Worksheets(1).Columns("B").WrapText = True
    newBook.Worksheets(1).Range("A1:B1000").NumberFormat = "0"
    newBook.Worksheets(1).Range("A1:B1000").HorizontalAlignment = -4131

    newBook.Worksheets(1).Cells(1,1).Interior.ColorIndex="15"
    newBook.Worksheets(1).Cells(1,1).value="First Column, First Cell"
    newBook.Worksheets(1).Cells(2,1).value="First Column, Second Cell"
    newBook.Worksheets(1).Cells(1,2).value="Second Column, First Cell"
    newBook.Worksheets(1).Cells(2,2).value="Second Column, Second Cell"
    newBook.Worksheets(1).Name="My First WorkSheet"

    fname=Xcl.GetSaveAsFilename("Testing.xls")
    if fname = "False" then
        fname="Testing.xls"
    end if
    newBook.SaveAs fname
    Set Xcl = nothing

   end Sub %>
</body>
</html>


Alleen kreeg ik nu volgende error :

Microsoft VBScript runtime error '800a01ad'
ActiveX component can't create object: 'Excel.Application'

Om welke reden kan hij nu geen object meer aanmaken?

  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

Okee, dus kort samengevat heb je code die het doet in VbScript, en als je hem 1 op 1 copieert naar ASP niet meer?

(ik denk niet dat iemand zin heeft om de verschillen te zoeken, zus zeg maar als er andere dingen ook zijn aangepast ;) )

Lijkt mij dan bijna zeker een rechtenkwestie. De IUSR_machinenaam heeft geen uitvoerrechten op de excel.application. Welke DLL dat precies is moet je ff zoeken met google of in je registry..

kaart != map && bottel != fles
Wacht op antwoord


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:50

gorgi_19

Kruimeltjes zijn weer op :9

MS Excel is niet op de server geinstalleerd? 1e voorbeeld benader je hem clientside, 2e voorbeeld benader je de Excel Serverside.

Trouwens, als je hem zo 1 op 1 omzet naar ASP, solliciteer je er naar om de boel op te blazen. Geen MS Office op een server installeren en Server.CreateObject gebruiken.

[ Voor 41% gewijzigd door gorgi_19 op 23-04-2004 10:23 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • NMe
  • Registratie: Februari 2004
  • Nu online

NMe

Quia Ego Sic Dico.

Ik heb geen idee hoe het precies zit met je fout, maar er zit een wezenlijk verschil tussen het gebruik van <script laguage="VBScript"> en <%@language="VBScript"
Namelijk dat het eerste client side uitgevoerd wordt, en het tweede server side, tenminste in dit geval dan. Ik denk dat je het erin moet zoeken dat je server geen rechten heeft voor het uitvoeren van Excel.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Ik heb Excel niet op de server staan. Dat zou idd het probleem kunnen zijn. Ik zal het installeren en kijken of het probleem is opgelost.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:50

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 23 april 2004 @ 10:23:
Ik heb Excel niet op de server staan. Dat zou idd het probleem kunnen zijn. Ik zal het installeren en kijken of het probleem is opgelost.
8)7

Bereidt je er maar op voor dat je hem regelmatig mag gaan rebooten / resetten.. B)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Mja, het is eigenlijk ook helemaal niet interessant om Excel op verschillende servers te installeren. Nogal kostelijk. :/ Kan ik het op een andere manier aanpakken?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:50

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 23 april 2004 @ 10:32:
Mja, het is eigenlijk ook helemaal niet interessant om Excel op verschillende servers te installeren. Nogal kostelijk. :/ Kan ik het op een andere manier aanpakken?
.csv teruggeven... :P

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Cuball
  • Registratie: Mei 2002
  • Laatst online: 15:05
waarom voldoet de eerste manier niet ? volgens mij is dit de meeste gebruikte methode, clientside scripts laten uitvoeren. Client moet dan wel toegang verlenen aan het script om vanuit een browser je Excell aan te maken

"Live as if you were to die tomorrow. Learn as if you were to live forever"


  • NMe
  • Registratie: Februari 2004
  • Nu online

NMe

Quia Ego Sic Dico.

Cuball schreef op 23 april 2004 @ 10:53:
waarom voldoet de eerste manier niet ? volgens mij is dit de meeste gebruikte methode, clientside scripts laten uitvoeren. Client moet dan wel toegang verlenen aan het script om vanuit een browser je Excell aan te maken
Om de gebruiker's processor te besparen maybe? Of om bandbreedte te besparen? Wie weet... Ikzelf hou niet van client side oplossingen, is voor veel toepassingen te fraudegevoelig... :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Excel installeren op de server zorgt ervoor dat de foutmelding uitblijft (Heb maar ff op de testserver geinstalleerd geen paniek :) ), maar het duurt uren eer er iets te zien is. Ik zal idd een andere aanpak moeten gebruiken.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:50

gorgi_19

Kruimeltjes zijn weer op :9

Cuball schreef op 23 april 2004 @ 10:53:
waarom voldoet de eerste manier niet ? volgens mij is dit de meeste gebruikte methode, clientside scripts laten uitvoeren. Client moet dan wel toegang verlenen aan het script om vanuit een browser je Excell aan te maken
1. Ik gok dat veel systeembeheerders hier niet blij mee gaan zijn of dat deze optie zelfs geblokkeerd wordt dmv security instellingen.
2. Je gebruikt VBScript; IE gebonden.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Mja, ik geraak er niet goed uit hoe ik dit probleem moet aanpakken. Ik moet een 10-tal goedgevulde tabellen exporteren en het leek me mooi om elke tabel in 1 Excel-file op een aparte sheet te plaatsen. Maar er zijn blijkbaar meer na- als voordelen aan. Voor elke tabel een apart Excel-file is geen probleem. Maar vermits ik ook nog attachements moet exporteren ga ik op den duur met veel files zitten en dat stak me wat tegen.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:50

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 23 april 2004 @ 11:08:
Mja, ik geraak er niet goed uit hoe ik dit probleem moet aanpakken. Ik moet een 10-tal goedgevulde tabellen exporteren en het leek me mooi om elke tabel in 1 Excel-file op een aparte sheet te plaatsen. Maar er zijn blijkbaar meer na- als voordelen aan. Voor elke tabel een apart Excel-file is geen probleem. Maar vermits ik ook nog attachements moet exporteren ga ik op den duur met veel files zitten en dat stak me wat tegen.
Maar wat is er dan mis met .csv bestanden?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 15:23

Urk

Wij gebruiken deze methode bij een grote applicatie voor HP.
Door criteria aan te geven word er een Excel export gemaakt, en wel serverside.
Excel is dus op de server geinstalleerd.

Dit werkt allemaal prima, alleen kan het soms wel traag zijn, hoe meer records/queries hoe langer het duurt.

De grootst mogelijke export in de live site is ongeveer 800 records die allen ongeveer 32 kolommen bevatten, deze export duurt ongeveer 4 minuten.

Het enige probleem wat we tot dusver zijn tegengekomen is dat als de export behoorlijk groot is het excel process op de server soms niet meer afgesloten word.
Dus na verloop van tijd na het exporteren van de grotere raporten draaien er een aantal excel processen op de server. Die moeten we dan om de zoveel tijd handmatig terminaten, bij kleinere exports gaat dit wel allemaal prima.
Wellicht heeft dit iets met Excel timeout te maken ofzo?

We hebben zelf een zeer mooie opmaak, die gebruik maakt van fonts, bold, italic, kleuren, uitlijnen, wrappen etc...
Dus als je nog syntaxen wilt weten... Let me know.. 8)

[ Voor 10% gewijzigd door Urk op 23-04-2004 11:14 ]


Verwijderd

Topicstarter
En je kan niet op één of andere manier zeggen dat die Excel lokaal moet benaderen zeker?

Installatie van Excel op de server is eigenlijk geen optie. We zitten met iets te veel servers. Sorry, daar had ik niet bij stilgestaan.

csv is een optie, maar ik had het graag in Excel gehad. Als ik geen oplossing vind zal het de csv worden.

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 15:23

Urk

Verwijderd schreef op 23 april 2004 @ 11:24:
En je kan niet op één of andere manier zeggen dat die Excel lokaal moet benaderen zeker?

Installatie van Excel op de server is eigenlijk geen optie. We zitten met iets te veel servers. Sorry, daar had ik niet bij stilgestaan.

csv is een optie, maar ik had het graag in Excel gehad. Als ik geen oplossing vind zal het de csv worden.
Nee, volgens mij niet, als je serverside data wilt ophalen uit een DB moet excel ook serverside!
Snap alleen niet waarom Excel op de server installeren geen optie is, de site waarop je dit wilt doen draait toch ook maar op 1 server, of niet??
Dan heb je vervolgens alleen op DIE server Excel nodig.

Of zie ik iets verkeerd? :?

Verwijderd

Topicstarter
Nee, de applicatie draait op verschillende servers. En ik kan niet verwachten dat ze op iedere server Excel installeren. (Ik heb trouwens Excel ff op m'n testserver gesinstalleerd, maar het werkt nog niet. Hij geraakt er niet door.)

Ik zal maar eens gaan uitzoeken hoe ik dit alles met csv kan realiseren. Bedankt voor de replies in ieder geval.

Moest er nog iemand een oplossing weten, let me know...

Verwijderd

Topicstarter
Ah, ik weet al waarom het niet werkt met m'n testserver. OWC werkt enkel met Office XP las ik hier net :). M'n testserver is nog een w2k met Office 2000. Maar dat maar ff terzijde. Client was XP.

[ Voor 8% gewijzigd door Verwijderd op 23-04-2004 11:48 ]


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 15:23

Urk

OK, hoeveel servers gebruik je dan?
En misschien stomme vraag maar wat bedoel je met OCW?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:15

Creepy

Tactical Espionage Splatterer

Urk schreef op 23 april 2004 @ 11:12:
Wij gebruiken deze methode bij een grote applicatie voor HP.
Door criteria aan te geven word er een Excel export gemaakt, en wel serverside.
Excel is dus op de server geinstalleerd.

Dit werkt allemaal prima, alleen kan het soms wel traag zijn, hoe meer records/queries hoe langer het duurt.

De grootst mogelijke export in de live site is ongeveer 800 records die allen ongeveer 32 kolommen bevatten, deze export duurt ongeveer 4 minuten.
En dat vinden de gebruikers acceptabel? 4 minuten voor 800 records??

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 15:23

Urk

Creepy schreef op 23 april 2004 @ 11:57:
[...]

En dat vinden de gebruikers acceptabel? 4 minuten voor 800 records??
Ja hoor, hun willen Excel, dus ze moeten wel, die raporten worden per user ook niet vaak gedraaid. En dat is alleen op Admin niveau.

CSV is natuurlijk binnen 3 sec gedaan, maarja, dat ziet er niet uit...

  • Cuball
  • Registratie: Mei 2002
  • Laatst online: 15:05
offtopic:
vraagje, als je excel server side laat runnen, opent ie dan per gebruiker een nieuwe applicatie ??? lijkt me nogal zeer cpu/memory belastend, zeker als je met een 100 tal gebruikers tegelijk zoiets wil doen ...

"Live as if you were to die tomorrow. Learn as if you were to live forever"


  • party42
  • Registratie: Oktober 2000
  • Laatst online: 13:51
Urk schreef op 23 april 2004 @ 12:01:
[...]


Ja hoor, hun willen Excel, dus ze moeten wel, die raporten worden per user ook niet vaak gedraaid. En dat is alleen op Admin niveau.

CSV is natuurlijk binnen 3 sec gedaan, maarja, dat ziet er niet uit...
een beetje gebruiker heeft binnen een halve minuut, op zijn lokale machine een CSV file geimporteerd in excell.

Zelfde resultaat met als voordeel, geen excell (client software) op de server en een serverload vermindering van 3:57 min.

pff. als dat toch de keuzes zijn.
Cuball schreef op 23 april 2004 @ 13:45:
offtopic:
vraagje, als je excel server side laat runnen, opent ie dan per gebruiker een nieuwe applicatie ??? lijkt me nogal zeer cpu/memory belastend, zeker als je met een 100 tal gebruikers tegelijk zoiets wil doen ...
Excell is dus absoluut geen server applicatie. Dus ja, ik vrees dat 'ie inderdaad de processen gaat parallelliseren. Opzich, wees blij, stel hij zou het serieel doen, dan wacht je helemaal lang...

Absoluut een onvriendelijke oplossing.

[ Voor 33% gewijzigd door party42 op 23-04-2004 13:55 ]

Everyday's an endless stream, of cigarettes and magazines...


Verwijderd

Topicstarter
Ik heb dus voor de csv-methode gekozen... Maar nu zit ik met een ander probleempje. Alles gaat perfect tot ik in een veld van mijn tabel kom waarin er een enter is gebruikt. Bv. Memoveldje dat verschillende regels bevat. Hij neemt die enter mee over naar de csv en hij gaat dus in die csv ook naar een nieuwe regel dan. Hij mag pas naar een nieuwe regel gaan als hij heel de rij heeft gelezen.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:50

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 26 april 2004 @ 15:40:
Ik heb dus voor de csv-methode gekozen... Maar nu zit ik met een ander probleempje. Alles gaat perfect tot ik in een veld van mijn tabel kom waarin er een enter is gebruikt. Bv. Memoveldje dat verschillende regels bevat. Hij neemt die enter mee over naar de csv en hij gaat dus in die csv ook naar een nieuwe regel dan. Hij mag pas naar een nieuwe regel gaan als hij heel de rij heeft gelezen.
Dan moet je een Replace doen op die regel dmv een dummycode, en later bij het importeren deze dummy code weer vervangen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:56

.oisyn

Moderator Devschuur®

Demotivational Speaker

Laten we het even centraal houden, deze topic gaat over CreateObject, voor je CSV probleem heb je al een andere topic geopend, namelijk [rml][ ASP/VBScript] export naar csv[/rml]

Dus hou discussies over CSV graag buiten deze draad om verwarring te voorkomen :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1