Hola,
Me encuentro desarrollando uan aplicacion que crea dinamicamente PivotTables
de Excel.
El problema puntual es : las customlist funcionan correctamente, o sea
se crean, cuando se utilizan ordenan correctamente la columna
especificada, pero cuando todo termina y se abre el archivo excel, las
custo list no aparecen en la lista cuando se va a la opcion:
Tools -> Option... -> Custom Lists (solapa)
Basicamente el codigo que utilizo es el siguiente:
using Office = Microsoft.Office.Interop.Excel;
private int AddCustomLists(Office.Workbook workbook)
{
List<string> items = new List<string>();
items.Add("item1");
items.Add("item2");
items.Add("item3");
int listNumber = workbook.Application.GetCustomListNum(items.ToArray());
if (listNumber == 0)
{
workbook.Application.AddCustomList(items.ToArray(), Missing.Value);
}
return workbook.Application.GetCustomListNum(items.ToArray()) + 1;
}
El mismo como veran esta dentro de un metodo, que toma el workbook con el que
trabajo, y le agrega la lista.
Esta en realidad es llenada con un query a una db, pero para simplificar este
ejemplo, aqui le psue solo tres items a mano.
He probado al final cuando sale del metodo, hacer un :
workbook.Application.Save(Type.Missing);
o
workbook.Save();
Pero no hay caso.
Las customlist las puedo utilizar cuando las aplico en el orden
mediante programacion pero una vez que termina y cierro el Excel, estas
se pierden.
Para utilizarlas utilizo este codigo:
pivotTable.PivotSelect(string.Format("'{0}'[All]", pivoteFieldName),
Office.XlPTSelectionMode.xlLabelOnly, true);
Office.Range range = sheet.Application.Selection as Office.Range;
range.Sort(Type.Missing,
Office.XlSortOrder.xlAscending, // Order1
Type.Missing,
Office.XlSortType.xlSortLabels, //Type
Office.XlSortOrder.xlAscending,
Type.Missing,
Office.XlSortOrder.xlAscending,
Office.XlYesNoGuess.xlGuess,
<aqui reemplazo por el numero devuelto en el emtodo anterior>,
//OrderCustom
Type.Missing,
Office.XlSortOrientation.xlSortColumns, //Orientation
Office.XlSortMethod.xlStroke,
Office.XlSortDataOption.xlSortNormal,
Office.XlSortDataOption.xlSortNormal,
Office.XlSortDataOption.xlSortNormal);
Y este codigo funciona perfecto.
Saben porque puede ser que el CustomList no quede grabado junto al workbook ?
Estoy desarrollando con Visual Studio 2008, C#, y tengo una referencia a
Microsoft.Office.Interop.Excel v11
Gracias
Saludos
Yahoo! Cocina
Recetas prácticas y comida saludable
http://ar.mujer.yahoo.com/cocina/