Requerimiento
Exportar a Excel los datos de una lista en MOSS 2007:
- Incluyendo la información de versiones
- Sólo registros en donde cambie el estado
Enfoque de desarrollo
- Utilización de SPListItemVersion para leer la información de versiones
- Generación de los datos en XML para poder conectar fácilmente Excel
Resultado
Forma de uso
El código
<%@ Assembly Name="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"%>
<%@ Page Language="C#"
Inherits="Microsoft.SharePoint.WebControls.LayoutsPageBase" EnableViewStateMac="false" EnableViewState="true" MaintainScrollPositionOnPostback="true"%>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.IO" %>
<script runat="server">
protected override void OnLoad(EventArgs e) {
string resultado;
string estado;
string estado_anterior;
using ( SPWeb mi_web = SPContext.Current.Web ) {
SPList mi_lista = mi_web.GetList("/sites/sitio1/lista1");
SPQuery mi_consulta = new SPQuery();
mi_consulta.ViewFields = "<FieldRef Name='ID'/>";
mi_consulta.ViewFields = "<FieldRef Name='Estado_x0020_del_x0020_requerimi'/>";
mi_consulta.ViewFields += "<FieldRef Name='PermMask'/>";
DataTable tabla = new DataTable();
tabla.TableName = "Requerimientos";
tabla.Columns.Add("ID", typeof(int));
tabla.Columns.Add("Version", typeof(string));
tabla.Columns.Add("Estado", typeof(string));
tabla.Columns.Add("Modificada", typeof(string));
SPListItemCollection mis_items = mi_lista.GetItems(mi_consulta);
foreach (SPListItem mi_item in mis_items) {
estado_anterior = "";
for ( int i = mi_item.Versions.Count - 1 ; i >= 0; i-- ) {
SPListItemVersion mi_version = mi_item.Versions[i];
if ( mi_version["Estado_x0020_del_x0020_requerimi"] == null ) {
estado = "";
}
else {
string lkp_estado = mi_version["Estado_x0020_del_x0020_requerimi"].ToString();
SPFieldLookupValue lkp_estado_valor = new SPFieldLookupValue(lkp_estado);
estado = lkp_estado_valor.LookupValue;
}
if ( estado != estado_anterior ) {
tabla.Rows.Add( mi_version["ID"], mi_version.VersionLabel, estado, mi_version.Created.Date.ToString("d") );
estado_anterior = estado;
}
}
}
using (StringWriter sw = new StringWriter()) {
tabla.WriteXml(sw);
resultado = sw.ToString();
}
}
Response.ContentType = "application/xml";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.Write(resultado);
}
</script>
Hasta la próxima!
0 comentarios:
Publicar un comentario