Por la mañana, se agregó una función a la parte de gestión de pedidos del sistema para exportar la información del pedido consultada a Excel para que el administrador la analice. El código escrito anteriormente es el siguiente:
Response.Clear();
Respuesta.BufferOutput = verdadero;
Respuesta.Charset = "GB2312";
Response.AppendHeader ("Disposición de contenido", "adjunto; nombre de archivo = Nombre de archivo.xls");
Response.ContentEncoding = Codificación.GetEncoding("GB2312");
Response.ContentType = "aplicación/ms-excel";
this.EnableViewState = falso;
System.Globalization.CultureInfo myinfo = new System.Globalization.CultureInfo("ZH-CN", verdadero);
StringWriter osw = new StringWriter(miinfo);
HtmlTextWriter ohtw = nuevo HtmlTextWriter(osw);
dgQueryResult.RenderControl(ohtw);
Respuesta.Escribir(osw);
Respuesta.End();
Mi consulta utilizó paginación y el cliente requirió que todos los datos consultados se exportaran a Excel. Por lo tanto, esta función no se pudo lograr exportando el contenido del control a Excel como antes, así que cambié el código a este:
Respuesta.Clear();
Respuesta.BufferOutput = verdadero;
Respuesta.Charset = "GB2312";
Response.AppendHeader ("Disposición de contenido", "adjunto; nombre de archivo = orden.xls");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType = "aplicación/ms-excel";
cadena strExcelHeader = cadena.Empty;
cadena strExcelItems;
if(ViewState["SQL"] != null) // Obtiene la declaración SQL utilizada en la consulta anterior
{
// Obtenga los títulos de cada columna, separe cada título con t y agregue un carácter de retorno de carro después del título de la última columna
strExcelHeader = "Número de pedidotDistribuidortRegióntCategoría pequeñatProductotCantidad pagadatTiempo del pedidotEstado válidotEstado de procesamientotn";
//Escribe la información de datos obtenida en el flujo de salida HTTP
Respuesta.Write(strExcelHeader);
// Procesar los datos del resultado de la consulta fila por fila
ITDBHandle itDbHandle = nuevo ITDBHandle();
itDbHandle.QueryString = ViewState["SQL"].ToString();
Lector SqlDataReader = itDbHandle.ExecuteDataReader();
mientras (lector.Leer())
{
strExcelItems = cadena.Empty;
strExcelItems += lector["OrderID"].ToString() + "t";
strExcelItems += lector["Nombre del distribuidor"].ToString() + "t";
strExcelItems += lector["Ciudad"].ToString() + "t";
strExcelItems += lector["SmallClassName"].ToString() + "t";
strExcelItems += lector["Marca"].ToString() + lector["Modelo"].ToString() + "t";
strExcelItems += lector["PrecioTotal"].ToString() + "t";
strExcelItems += lector["FechaPedido"].ToString() + "t";
strExcelItems += lector["IsValid"].ToString() + "t";
strExcelItems += lector["DealState"].ToString() +"n";
Respuesta.Write(strExcelItems);
}
lector.Cerrar();
Respuesta.End();
}
Aquí simplemente escribo los datos consultados en formato Excel (por supuesto, también puede estar en otros formatos, como XML), lo cual es suficiente para necesidades simples. Por supuesto, también es muy sencillo usar .NET para operar directamente. Archivos de Excel. Hay muchos ejemplos de este tipo como referencia.