Am Morgen wurde dem Auftragsverwaltungsteil des Systems eine Funktion hinzugefügt, um die abgefragten Bestellinformationen zur Analyse durch den Administrator nach Excel zu exportieren. Der zuvor geschriebene Code lautet wie folgt:
Response.Clear();
Response.BufferOutput = true;
Response.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(myinfo);
HtmlTextWriter ohtw = new HtmlTextWriter(osw);
dgQueryResult.RenderControl(ohtw);
Response.Write(osw);
Response.End();
Meine Abfrage verwendete Paging und der Kunde verlangte, dass alle abgefragten Daten nach Excel exportiert werden. Daher konnte diese Funktion nicht wie zuvor durch den Export des Steuerelementinhalts nach Excel erreicht werden, daher habe ich den Code wie folgt geändert:
Response.Clear();
Response.BufferOutput = true;
Response.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;
string strExcelItems;
if(ViewState["SQL"] != null) // Holen Sie sich die in der vorherigen Abfrage verwendete SQL-Anweisung
{
// Holen Sie sich die Titel jeder Spalte, trennen Sie jeden Titel mit t und fügen Sie nach dem letzten Spaltentitel ein Wagenrücklaufzeichen hinzu
strExcelHeader = "BestellnummertHändlertRegiontKleine KategorietWaretBezahlter BetragtBestellzeittGültiger StatustVerarbeitungsstatustn";
//Schreiben Sie die erhaltenen Dateninformationen in den HTTP-Ausgabestream
Response.Write(strExcelHeader);
// Abfrageergebnisdaten Zeile für Zeile verarbeiten
ITDBHandle itDbHandle = new ITDBHandle();
itDbHandle.QueryString = ViewState["SQL"].ToString();
SqlDataReader reader = itDbHandle.ExecuteDataReader();
while(reader.Read())
{
strExcelItems = string.Empty;
strExcelItems += reader["OrderID"].ToString() + "t";
strExcelItems += reader["DealerName"].ToString() + "t";
strExcelItems += reader["City"].ToString() + "t";
strExcelItems += reader["SmallClassName"].ToString() + "t";
strExcelItems += Reader["BrandName"].ToString() + Reader["Model"].ToString() + "t";
strExcelItems += reader["TotalPrice"].ToString() + "t";
strExcelItems += reader["OrderDate"].ToString() + "t";
strExcelItems += reader["IsValid"].ToString() + "t";
strExcelItems += reader["DealState"].ToString() +"n";
Response.Write(strExcelItems);
}
Reader.Close();
Response.End();
}
Hier schreibe ich die abgefragten Daten einfach in Excel-Form (natürlich kann es auch in anderen Formaten sein, z. B. XML), was für einfache Anforderungen ausreicht. Natürlich ist es auch sehr einfach, .NET direkt zu verwenden Excel-Dateien, es gibt viele solcher Beispiele als Referenz.