In this blog we will see how to export a list in excel using server side object model.
First block we will retrieve all items from the list. This can be done in several ways.
First block we will retrieve all items from the list. This can be done in several ways.
- You can get all items without filtering any columns. This will consist of all hidden and default columns as well.
- You can get all items with removing hidden columns
- You can get specific set of items based on some filter
- System.Data.dll &
Microsoft.SharePoint.dll
- siteurl : this is the site url from which you will fetch data
listName : this is list name from which you will fetch data
private void getListData(string siteUrl, string listName)
{
DataTable tableForExcel = null;
SPSecurity.RunWithElevatedPrivileges(delegate ()
{
using (SPSite objectCurrentSite = new SPSite(SPContext.Current.Site.RootWeb.Url))
{
using (SPWeb objectCurrentWeb = objectCurrentSite.OpenWeb())
{
SPList objectList = objectCurrentWeb.Lists.TryGetList(listName);
SPListItemCollection objectListItemCollection = null;
if (objectList != null)
objectListItemCollection = objectList.GetItems();
if (objectListItemCollection != null && objectListItemCollection.Count > 0)
{
tableForExcel = new DataTable();
//Use only one approach of the below two as per your requirement
//#Approach1
//Here all fields will be included in excel including hidden fields
tableForExcel = objectListItemCollection.GetDataTable();
//#Approach2
//One approach where you can remove hidden fields from displaying in excel
foreach (SPField objectField in objectListItemCollection[0].Fields)
{
if (!objectField.Hidden)
{
tableForExcel.Columns.Add(objectField.Title);
}
}
foreach (SPListItem item in objectListItemCollection)
{
DataRow row = tableForExcel.NewRow();
int position = 0;
foreach (SPField objectField in item.Fields)
{
if (!objectField.Hidden)
{
row[position] = Convert.ToString(item[objectField.Title]);
position++;
}
}
tableForExcel.Rows.Add(row);
}
if (tableForExcel != null)
exportToExcel(tableForExcel,"Report");
}
}
}
});
}
We will call exportToExcel(tableForExcel, fileName), this method have two parameters: - tableForExcel : data table we have created with list data
fileName : provide the name for excel which you want
private static void exportToExcel(DataTable tableForExcel, string fileName)
{
if (tableForExcel != null)
{
string attachment = "attachment; filename=" + fileName + ".xls";
System.Web.HttpContext.Current.Response.ClearContent();
System.Web.HttpContext.Current.Response.AddHeader("content-disposition", attachment);
System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
string tab = "";
//Adding column header in excel
foreach (DataColumn dataColumn in tableForExcel.Columns)
{
System.Web.HttpContext.Current.Response.Write(tab + dataColumn.ColumnName);
tab = "\t";
}
System.Web.HttpContext.Current.Response.Write("\n");
int i;
foreach (DataRow dr in tableForExcel.Rows)
{
tab = "";
for (i = 0; i < tableForExcel.Columns.Count; i++)
{
System.Web.HttpContext.Current.Response.Write(tab + dr[i].ToString());
tab = "\t";
}
System.Web.HttpContext.Current.Response.Write("\n");
}
System.Web.HttpContext.Current.Response.End();
System.Web.HttpContext.Current.Response.Redirect(SPContext.Current.Web.Url.ToString());
}
else
{
//Your code here
}
}
No comments :
Post a Comment