[ASP] export naar Excel, datum omgekeerd

Pagina: 1
Acties:

  • Dutch_guy
  • Registratie: September 2001
  • Laatst online: 24-07 13:40
D.m.v. het uitdraaien van batches kan ik bepaalde informatie uit een Access database halen.

Ik kan die informatie tonen als HTML of ik kan kiezen om de informatie te openen in Excel, wat prima werkt.

Echter in de HTML ziet het datumveld er prima uit, echter als de informatie naar Excel wordt gebracht dan wordt de datum verkeerd weergegeven. 9-10-2003, wordt dan 10-9-2003.

Ik kan dit eventueel oplossen door voor het datumveld een spatie te plaatsen, waardoor als je naar Excel exporteerd dit veld als tekst wordt gezien.

Echter men wil geen spatie daarvoor hebben.

Een enkele quote werkt ook niet, omdat deze gewoon wordt weergegeven in Excel.

Iemand een idee, hoe dit op te lossen ?

Pay peanuts get monkeys !


  • FastWallie
  • Registratie: September 2001
  • Laatst online: 25-11-2024
En Excel zal alleen de datum omdraaien als dat weer een geldige datum oplevert. Dit is echt een heel irritant probleem waar ik ook mee te maken heb. Ik weet eigenlijk niet meer wat onze oplossing was.

http://www.jawal.nl


  • CmdrKeen
  • Registratie: Augustus 2000
  • Laatst online: 27-05 21:11

CmdrKeen

Krentenboltosti

Is het alleen met "omdraaibare" datums, zoals 4-5 en 7-10? Ligt het niet aan je system locale?

Bloed, zweet & koffie


  • Dutch_guy
  • Registratie: September 2001
  • Laatst online: 24-07 13:40
Het is inderdaad alleen met omdraaibare datums.

Pay peanuts get monkeys !


Verwijderd

Ik had een soortgelijk probleem. Ik moest een tabel in HTML exporteren naar Excell. De oplossing die ik gebruik is dmv clientside Javascripting.

JavaScript:
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
sub GenerateExcellDoc()
  Dim xls 'As Excel.Application
  Dim wb 'As Excel.Workbook
  Dim wsht 'As Excel.Worksheet
  dim sID 'As String
  dim iRow 'As Integer
  dim iCell 'As Integer
  Dim DocElement
  Dim sText ' As String

  Set xls = CreateObject("Excel.Application")
  Set wb = xls.Workbooks.Add
  xls.DisplayAlerts = False
  While wb.Sheets.Count > 1
    wb.Sheets(1).Delete
  Wend

  xls.DisplayAlerts = True

  Set wsht = wb.Sheets(1)
  wsht.Name = "<%=Title%>"
  wsht.Columns( "A:A").NumberFormat="dd-mm-yyyy hh:mm:ss"
  for i = 0 to window.document.all.length-1
    set DocElement = window.document.all(i)
    sID = DocElement.id
    if left(sID,2) = "d_" then
      sText = Cstr(DocElement.innertext)
      iRow = cint(Split(sID, "_")(1))
      iCell = cint(Split(sID, "_")(2))
      if iRow = 1 then
        wsht.Cells(iRow, iCell).FormulaR1C1 = Replace( sText, vbcrlf, " ")
      else
        wsht.Cells(iRow, iCell).FormulaR1C1 = sText
      end if
    end if
  next

  wsht.Columns("A:A").EntireColumn.AutoFit
  xls.visible = true
end sub


Deze lap code leest een HTML tabel uit en kopieert de onhoud in een nieuw geopend Excell bestand. Hopelijk heb je hier iets aan.

  • FastWallie
  • Registratie: September 2001
  • Laatst online: 25-11-2024
Is dit een automatisch process of een handmatige actie om de Excel file te maken ? Het kan nogal een verschil maken hoe je de data omzet naar Excel! Kun je iets meer aangeven over het proces om die Excel file te maken ?

http://www.jawal.nl


  • Dutch_guy
  • Registratie: September 2001
  • Laatst online: 24-07 13:40
Dit gebeurt handmatig.

Ik kan kiezen tussen twee types om de informatie te tonen:

- HTML tabel
- Excel bestand

De data van de HTML tabel wordt d.m.v. de volgende code naar Excel gestuurd:

code:
1
2
3
4
if request("excel") <> "" then
  Response.ContentType = "application/vnd.ms-excel"
  Response.AddHeader "content-disposition", "attachment; filename="export.xls"
end if

Pay peanuts get monkeys !


Verwijderd

Via het Excell.Application object kun je dmv VBScript of JavaScript Excell beheren. Zoek maar eens op het Net op dit object naar de DOM, dan zie je wat je allemaal kunt doen. Dit stukje code werd gebruikt om een HTML-tabel te exporteren naar een Excell-sheet. Aan de client-side werden alle ID-tags uitgelezen en alleen de relevante tags werden gekopieerd. Als laatste commando heb je in dit geval xls.visible = true, waardoor de sheet zichtbaar wordt. Als de gebruiker hem af wil sluiten krijgt hij de vraag op hij deze op ilt slaan. Je kunt ook de sheet direct vanuit de code opslaan.

De aanroep van de voorbeeldfunctie gebeurde door middel van een druk op een knopje waardoor dit dus aan de client-side uitgewvoerd werd. Let wel, dit komt uit een ASP-applicatie, maar het scripting-gedeelte is algemeen te gebruiken.

edit:

Als je de pagina via de content-type als Excell toont, dan krijg je inderdaad het probleem. Ik had precies hetzelfde en dit is wat ik gedaan heb om het op te lossen.

[ Voor 11% gewijzigd door Verwijderd op 09-10-2003 11:55 ]


  • FastWallie
  • Registratie: September 2001
  • Laatst online: 25-11-2024
Wordt de data echt omgekeerd weggeschreven of geeft Excel het omgekeerd weer ??
Vaak kun je dit alleen controleren als je het als CSV file wegschrijft en dan de CSV op 2 manieren bekijken (via textpad en excel)

http://www.jawal.nl


Verwijderd

Let op! Via Response.ContentType = "application/vnd.ms-excel" heb je geen invloed op de formattering van data in je sheet. Laadt het via een script en je hebt wel controle over je sheet. Tot aan naamgeving van bladen, kleuring, formules, noem maar op. Zie het door mij geposte voorbeeld en zoek maar op het Net hierover verder.

[ Voor 3% gewijzigd door Verwijderd op 09-10-2003 11:59 ]

Pagina: 1