guid bilgisi ile değil de field'ın title bilgisi ile değerine erişebiliyoruz.
SPList currentList = currentSPWeb.Lists[listGUID];
SPView currentView = currentList.Views[viewGUID];
SPListItemCollection oItemCol = currentList.GetItems(currentView);
SPViewFieldCollection collViewFields = currentView.ViewFields;
StringCollection stringCol = currentView.ViewFields.ToStringCollection();
int row = 1;int column = 0;
foreach (String viewField in stringCol)
{
SPField field = currentList.Fields.GetField(viewField);
column++;
excelWorksheet.Cells[row, column].Value = field.Title;
}
int rowData = 1;
int columData = 1;
foreach (SPListItem item in oItemCol)
{
rowData++;
foreach (String viewField in stringCol)
{
SPField field = currentList.Fields.GetField(viewField);
if (item[field.Title] == null)
{
excelWorksheet.Cells[rowData, columData].Value = "";
}
else
{
// ishak.kulekci 22.02.2012
// external list'de field'leri guid bilgileri {00000000-0000-0000-0000-000000000000} şeklinde oluyor, bundan dolayı guid üzerinden alınınca hata vermektedir.
excelWorksheet.Cells[rowData, columData].Value = item[field.Title]; //item[field.Id];
}
//if (field.FieldValueType.BaseType == typeof(System.DateTime))
//{
// worksheet.Cell(rowData, columData).Style.DateFormat.Format = "yyyy-MM-dd";
//}
columData++;
}
columData = 1;
}
Hiç yorum yok:
Yorum Gönder