cs_tleroy
Messages postés12Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention24 octobre 2007
-
18 avril 2005 à 13:50
cs_tleroy
Messages postés12Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention24 octobre 2007
-
19 avril 2005 à 10:00
Bonjour à tous,
J'ai un problème lors d'un export de donnée vers excel, dans le fichier créé
dynamiquement se trouve la copie conforme de mon affichage HTML mais pas les
données que je souhaite.
D'où vient le problème ?
Voici mon code :
Private
Sub btnExporter_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles btnExporter.Click
Try
Dim mDataGridSalesItem
As DataGridItem
Dim chkExport
As CheckBox
Dim mCODECD
As
String
Dim count
As
Integer = 0
Dim item
As DataGridItem
Dim sbrHTML
As System.Text.StringBuilder =
New System.Text.StringBuilder
' Vérification du nombre d'enregistrement a exporter
For
Each item
In DataGridSales.Items
DetermineSelection(item, count)
Next
sbrHTML.Append("\")
sbrHTML.Append(\"----
<center>Ventes - Export des CODECD du " +
Date.Today.ToLongDateString.ToString + "
</center>, \")
sbrHTML.Append(\"----
CODECD |Description produit |Fournisseur(s) 1 |Fournisseur(s) 2 |PPUB |PPUB Min. |PPUB Max. |Ecart Type |Quantité |Nombre de pharmacie(s) |WeekCode |\")
If count > 0
Then
For
Each mDataGridSalesItem
In DataGridSales.Items
chkExport = mDataGridSalesItem.FindControl(\"chkSel\")
If chkExport.Checked
Then
Try
Dim mConn
As
New SqlConnection(strConnect)
mConn.Open()
Dim mCmd
As
New SqlCommand(\"SELECT * FROM CODE_SALES_CSA WHERE CSA_CODECD = '\" +
CType(mDataGridSalesItem.FindControl(\"hyperlinkCODECD\"), HyperLink).Text + \"'\", mConn)
Dim mDr
As SqlDataReader = mCmd.ExecuteReader()
While mDr.Read()
sbrHTML.Append(\"----
\")
If
Not IsDBNull(mDr.Item(\"CSA_CODECD\"))
Then
sbrHTML.Append(\"" + mDr.Item("CSA_CODECD").ToString() + ", \")
Else
sbrHTML.Append(\", \")
End
If
If
Not IsDBNull(mDr.Item(\"CSA_PRDDESC\"))
Then
sbrHTML.Append(\"" + mDr.Item("CSA_PRDDESC").ToString() + ", \")
Else
sbrHTML.Append(\", \")
End
If
If
Not IsDBNull(mDr.Item(\"CSA_PSUP\"))
Then
sbrHTML.Append(\"" + mDr.Item("CSA_PSUP").ToString() + ", \")
Else
sbrHTML.Append(\", \")
End
If
If
Not IsDBNull(mDr.Item(\"CSA_SSUP\"))
Then
sbrHTML.Append(\"" + mDr.Item("CSA_SSUP").ToString() + ", \")
Else
sbrHTML.Append(\", \")
End
If
If
Not IsDBNull(mDr.Item(\"CSA_AVG_PRICE\"))
Then
sbrHTML.Append(\"" + FormatNumber(mDr.Item("CSA_AVG_PRICE"), 2) + " &euro;, \")
Else
sbrHTML.Append(\", \")
End
If
If
Not IsDBNull(mDr.Item(\"CSA_MIN_PRICE\"))
Then
sbrHTML.Append(\"" + FormatNumber(mDr.Item("CSA_MIN_PRICE"), 2) + " &euro;, \")
Else
sbrHTML.Append(\", \")
End
If
If
Not IsDBNull(mDr.Item(\"CSA_MAX_PRICE\"))
Then
sbrHTML.Append(\"" + FormatNumber(mDr.Item("CSA_MAX_PRICE"), 2) + " &euro;, \")
Else
sbrHTML.Append(\", \")
End
If
If
Not IsDBNull(mDr.Item(\"CSA_STDEV_PRICE\"))
Then
sbrHTML.Append(\"" + FormatNumber(mDr.Item("CSA_STDEV_PRICE"), 2) " &euro;, \")
Else
sbrHTML.Append(\", \")
End
If
If
Not IsDBNull(mDr.Item(\"CSA_SUM_QTY\"))
Then
sbrHTML.Append(\"" + Format(mDr.Item("CSA_SUM_QTY"), "# ##0").ToString() + ", \")
Else
sbrHTML.Append(\", \")
End
If
If
Not IsDBNull(mDr.Item(\"CSA_COUNT_PHARCD\"))
Then
sbrHTML.Append(\"" + Format(mDr.Item("CSA_COUNT_PHARCD"), "# ##0").ToString() + ", \")
Else
sbrHTML.Append(\", \")
End
If
If
Not IsDBNull(mDr.Item(\"CSA_WEEKCD\"))
Then
sbrHTML.Append(\"" + mDr.Item("CSA_WEEKCD").ToString() + ", \")
Else
sbrHTML.Append(\", \")
End
If
sbrHTML.Append(\"\")
End
While
mDr.Close()
mConn.Close()
Catch ex
As Exception
TitreInfoText.Text = \"Une erreur est survenue\"
MessageInfoText.Text = \" Message : \" & ex.Message & \"
\"
MessageInfoText.Text & = \"Source : \" & ex.Source & \"
\"
MessageInfoText.Text &= \" Détail : \" & ex.StackTrace
PanelInfo.Visible =
True
End
Try
End
If
Next
End
If
sbrHTML.Append("
")
Dim myFileName
As
String = "ReportSales" + Microsoft.VisualBasic.Replace(
Date.Today.ToShortDateString, "/", "_") + ".xls"
Dim swXLS
As StreamWriter =
New StreamWriter(Server.MapPath("\UnknownManagement\IHM\Export\Report") + myFileName,
False, System.Text.Encoding.Unicode)
swXLS.Write(sbrHTML.ToString())
swXLS.Close()
Response.Clear()
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader("Content-Disposition", "attachment; filename=" + myFileName)
'Retourner le rapport à l'utilisateur
Response.WriteFile(myFileName)
Catch ex
As Exception
TitreInfoText.Text = "Une erreur est survenue"
MessageInfoText.Text = " Message : " & ex.Message & "
"
MessageInfoText.Text & = "Source : " & ex.Source & "
"
MessageInfoText.Text &= " Détail : " & ex.StackTrace
PanelInfo.Visible =
True
End
Try
End
Sub
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 18 avril 2005 à 15:30
Et si tu envoies tes données directement dans le flux HTML au lieu du flux de excel ? en gros un response.write(sbrHTML) en enlevant tout le reste (si j'ai bien compris le code)
ca donne quoi ?
t'as fait un point d' arret la ou t'as un problème ?
cs_tleroy
Messages postés12Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention24 octobre 2007 18 avril 2005 à 15:57
Quand je fais un response.write(sbrHTML), il m'affiche un tableau avec les données de mon export au dessus de mon datagrid dans ma page.
En fait je n'ai aucune erreur qui apparait donc pas facile pour comprendre pourquoi lorsque je lui demande de m'afficher mon fichier dans excel, il m'ouvre le fichier dans excel avec mon flux html dedans ...
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 18 avril 2005 à 16:04
et c'est pas ce que tu veux ? car la ton code il te met le flux html
avec le contentype de Excel, donc en gros Excel ouvre un fichier HTML,
et je n'en vois pas l interet....
cs_tleroy
Messages postés12Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention24 octobre 2007 18 avril 2005 à 16:19
j'aimerais que excel m'ouvre le fichier xls créé par le streamwriter.
A cette ligne "Dim swXLS
As StreamWriter =
New StreamWriter(Server.MapPath("\UnknownManagement\IHM\Export\Report") + myFileName,
False, System.Text.Encoding.Unicode)"
je crée un nouveau fichier nommé toto.xls.
Quand je vais double-cliquer sur le fichier via l'explorateur windows, il m'ouvre correctement le fichier dans excel.
Comment faire pour qu'il me fasse la même chose depuis l'application ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 18 avril 2005 à 16:32
t'arrives à enregistrer un fichier excel sur ton disque ? a mon avis avec ta méthode c'est deja pas bon : utilises VSTO ...
Pourquoi dans ce cas utilises tu asp.net ? une fois que ton fichier est
créer, une fois que le fichier est créer, tu ne peux pas faire ouvrir
excel comme ca, au pire tu vas lancer Excel dans IE ... c'est ce que tu
as l'air de faire, sans le vouloir :p
cs_tleroy
Messages postés12Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention24 octobre 2007 18 avril 2005 à 16:49
Oui j'arrive a enregistré un fichier excel sur mon disque. Si j'utilise cette méthode c'est tout simplement pour un gain de temps.
Au départ j'utilisais l'interop avec les Office PIA mais ça met énormément de temps alors qu'en faisant comme je fais maintenant c'est pratiquement instantané !!!
cs_tleroy
Messages postés12Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention24 octobre 2007 19 avril 2005 à 10:00
Merci pour l'info !!! J'ai effectué quelques modifications sur mon code et là ça fonctionne bien pour les utilisateurs qui sont en windows XP et office 2003 ainsi que sur mon serveur de prod (windows 2000 server).
Par contre ça ne fonctionne pas pour les utilisateurs qui sont en windows 2000 pro avec offcie 2000 et XP...