Dans la matinée, une fonction a été ajoutée à la partie gestion des commandes du système pour exporter les informations de commande demandées vers Excel pour que l'administrateur puisse les analyser. Le code écrit précédemment est le suivant :
Response.Clear();
Réponse.BufferOutput = true ;
Réponse.Charset = "GB2312" ;
Response.AppendHeader("Content-Disposition","attachment;filename = FileName.xls");
Response.ContentEncoding = Encoding.GetEncoding("GB2312");
Response.ContentType = "application/ms-excel" ;
this.EnableViewState = false ;
System.Globalization.CultureInfo myinfo = new System.Globalization.CultureInfo("ZH-CN", true);
StringWriter osw = new StringWriter(moninfo);
HtmlTextWriter ohtw = new HtmlTextWriter(osw);
dgQueryResult.RenderControl(ohtw);
Réponse.Write(osw);
Réponse.End();
Ma requête utilisait la pagination et le client exigeait que toutes les données demandées soient exportées vers Excel. Par conséquent, cette fonction n'a pas pu être réalisée en exportant le contenu du contrôle vers Excel comme auparavant, j'ai donc modifié le code comme suit :
Réponse.Clear();
Réponse.BufferOutput = true ;
Réponse.Charset = "GB2312" ;
Response.AppendHeader("Content-Disposition","attachment;filename = order.xls");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType = "application/ms-excel" ;
string strExcelHeader = string.Empty;
chaîne strExcelItems ;
if(ViewState["SQL"] != null) // Récupère l'instruction SQL utilisée dans la requête précédente
{
// Récupère les titres de chaque colonne, sépare chaque titre par t et ajoute un caractère de retour chariot après le titre de la dernière colonne
strExcelHeader = "Numéro de commandetConcessionnairetRégiontPetite catégorietCommoditétMontant payétDurée de la commandetStatut validetStatut de traitementtn";
//Écrivez les informations de données obtenues dans le flux de sortie HTTP
Réponse.Write(strExcelHeader);
// Traiter les données du résultat de la requête ligne par ligne
ITDBHandle itDbHandle = new ITDBHandle();
itDbHandle.QueryString = ViewState["SQL"].ToString();
Lecteur SqlDataReader = itDbHandle.ExecuteDataReader();
pendant que(lecteur.Read())
{
strExcelItems = string.Empty;
strExcelItems += reader["OrderID"].ToString() + "t";
strExcelItems += reader["DealerName"].ToString() + "t";
strExcelItems += reader["Ville"].ToString() + "t";
strExcelItems += reader["SmallClassName"].ToString() + "t";
strExcelItems += lecteur["BrandName"].ToString() + lecteur["Modèle"].ToString() + "t";
strExcelItems += reader["TotalPrice"].ToString() + "t";
strExcelItems += reader["OrderDate"].ToString() + "t";
strExcelItems += reader["IsValid"].ToString() + "t";
strExcelItems += reader["DealState"].ToString() +"n";
Réponse.Write(strExcelItems);
}
lecteur.Close();
Réponse.End();
}
Ici, j'écris simplement les données interrogées sous forme d'Excel (bien sûr, cela peut aussi être dans d'autres formats, comme XML), ce qui est suffisant pour des besoins simples. Bien sûr, il est également très simple d'utiliser .NET pour opérer directement. Fichiers Excel, il existe de nombreux exemples de ce type pour référence.