16 messaggi dal 30 gennaio 2008
Sto provando a creare un file di excel con un'applicazione Web (Visual studio 2005) estraendo i dato da una tabella di SQLserver2005.
Sul server non c'è l'applicazione excel quindi niente OXPPIA's.
Il file viene creato dinamicamente sul server , e, per ora, salvato sempre sul server. Poi, l'end user, sceglierè da una lista quale scaricarsi sul Pc.
Sono riuscita a creare il file ma, purtroppo, non riesco a formattare la colonna "importo", e sarebbe il minimo, ma ottengo un foglio .xls inutilizzabile.
Sul server le cifre sono numeric(18,2). esempio: 1234,99 -34567,11
Il file che ottengo ha una colonna Importo che oltre a non essere formattata (il risultato è "generale", allineam. a sx, 1234,99 -34567,11) non è nemmeno formattabile aperto con Excel!!! Nemmeno manualmente si riesce a formattarlo in numerico! non è numerico e quindi non fai nemmeno una misera somma...
Quello che vorrei ottenere è 1.234,99 -34.567,11 oltrechè una colonna di importi veri sui quali poter lavorare!
Il template che ho usato per creare il testo HTM (che è compatibile 100% con XL) riporta correttamente la formattazione della <TD> che contiene la pseudo cifra
(.xl26
{mso-style-parent:style0;
mso-number-format:Standard;}
Se apro in excel il file ottenuto ne leggo il codice HTM, trovo regolarmente impostata la formattazione numerica standard ma il dato resta non formattato.
Ho provato anche ad intervenire sul reader.getvalue ma niente!
qualcuno mi può aiutare?
Grazie!

Tappat (code is following)

CODE:
Sub creaXLtuttiConti()

Dim a
Dim fso = CreateObject("Scripting.FileSystemObject")
Dim pathTemplate, pathTEMP
Dim leggiFile As String, tabellaConti As String

nomeConto = "12345"
anno = "2007"

......
pathTemplate = Server.MapPath("../XLtemplates/TemplOneri.txt")
pathTEMP = Server.MapPath("../Temp/" & nomeDir & "/" & nomeConto & "_" & anno & ".xls")

queryString = "SELECT ......"

Dim cmd1 As New SqlCommand(queryString, cnSql)
Dim reader As SqlDataReader = cmd1.ExecuteReader()
Dim numRec As Integer = 0
Dim numFile As Integer = 1

If reader.HasRows Then
Do While reader.Read()
tabellaConti = tabellaConti & "<tr height=17 style='height:12.75pt'>"
tabellaConti = tabellaConti & "<td height=17 class=xl25 style='height:12.75pt'>" & reader.GetString(0) & "</td>"
tabellaConti = tabellaConti & "<td class=xl25>" & reader.GetString(1) & "</td>"
tabellaConti = tabellaConti & "<td class=xl25>" & reader.GetString(2) & "</td>"
tabellaConti = tabellaConti & "<td class=xl25>" & reader.GetValue(3) & "</td>"
tabellaConti = tabellaConti & "<td style=xl26>" & reader.GetValue(4) & "</td>"

numRec = numRec + 1
If numRec >= 65000 Then
pathTEMP = Server.MapPath("../Temp/" & nomeDir & "/" & nomeConto & "_0" & numFile & "_" & anno & ".xls")
a = fso.OpenTextFile(pathTemplate)
leggiFile = a.readall

a = fso.CreateTextFile(pathTEMP, True)
leggiFile = Replace(leggiFile, "[datiMonitoraggio]", tabellaConti)
a.write(leggiFile)
a.close()

numRec = 0
numFile = numFile + 1
tabellaConti = ""
End If

Loop
End If

reader.Close()
cmd1.Dispose()

a = fso.OpenTextFile(pathTemplate)
leggiFile = a.readall

a = fso.CreateTextFile(pathTEMP, True)
leggiFile = Replace(leggiFile, "[datiMonitoraggio]", tabellaConti)
a.write(leggiFile)
a.close()

End Sub




FILE: templOmeri.txt

<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=ProgId content=Excel.Sheet>
<meta name=Generator content="Microsoft Excel 11">
......................
<style>
<!--table
{mso-displayed-decimal-separator:"\,";
mso-displayed-thousand-separator:"\.";}
@page
{mso-header-data:"&LT\.A\.P\.P\. Oneri";
mso-footer-data:&R&P;
margin:.98in .79in .98in .79in;
mso-header-margin:.51in;
mso-footer-margin:.51in;
mso-horizontal-page-align:center;}
.......
td
{mso-style-parent:style0;
padding-top:1px;
...........
.xl26
{mso-style-parent:style0;
mso-number-format:Standard;}

<x:ExcelWorkbook>
<x:ExcelWorksheets>
<x:ExcelWorksheet>
<x:Name>Foglio1</x:Name>
<......
<table x:str border=0 cellpadding=0 cellspacing=0 width=654 style='border-collapse:
collapse;table-layout:fixed;width:491pt'>
<col class=xl24 width=64 style='width:48pt'>
<col class=xl25 width=97 style='mso-width-source:userset;mso-width-alt:3547;
width:73pt'>
<col class=xl25 width=248 style='mso-width-source:userset;mso-width-alt:9069;
width:186pt'>
<col class=xl24 width=76 style='mso-width-source:userset;mso-width-alt:2779;
width:57pt'>
<col class=xl26 width=169 style='mso-width-source:userset;mso-width-alt:6180;
width:127pt'>
......

</table>
tappat wrote:
Sto provando a creare un file di excel con un'applicazione Web (Visual studio 2005) estraendo i dato da una tabella di SQLserver2005.

se non ti è stato risposto per 2 volte, speri che alla terza qualcuno lo sappia? generalmente se non ricevi risposta è perchè nessuno sa come aiutarti, oppure non vuole farlo, visto che qui tutti lo fanno nel tempo libero.

quanto al tuo problema, Excel usa un formato tutto suo quando legge l'HTML. http://agoric.com/sources/software/htmltoExcel

a questo url trovi diversi esempi su come farglielo capire. quando estrai i dati, evita di mantenere la formattazione e prova a mettere il . come separatore dei decimali.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
16 messaggi dal 30 gennaio 2008
Il titolo era solo per incuriosire qualcuno, mica volevo offendere !
Grazie comunque per la risposta.

Tappat
tappat ha scritto:
Il titolo era solo per incuriosire qualcuno


Per quanto mi riguarda hai ottenuto l'effetto contrario.

Ad ogni modo l'unico consiglio che mi sento di darti è quello di non usare HTML per generare documenti Excel ma XML.

Matteo Casati
GURU4.net
16 messaggi dal 30 gennaio 2008
Grazie x il consiglio. Infatti, con xml funziona.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.