简体   繁体   中英

SharePoint Backup Tool for Custom Lists

I have a SharePoint 2013 document library with three custom lists. Once a day I would like to backup the custom lists as excel documents.

Is there an inbuilt functionality in SharePoint 2013 which can be configured as a recurring task?

Or should one use PowerShell or CSOM to write script or an application which is then run by a Windows Task?

you dont have any OOB features to do this, i had the same req and i wrote an Utility - PFB the code - this will give you an o/p in .csv file

class Program

{

private static DataTable dataTable;

private static SPList list;

static void Main(string[] args)

{

try

{

Console.WriteLine("Site Url: "); 

string _siteUrl = Console.ReadLine(); 

if (!string.IsNullOrEmpty(_siteUrl))

{ 

SPSecurity.RunWithElevatedPrivileges(delegate() 

 { 

  using (SPSite site = new SPSite(_siteUrl)) 

   { 

     if (site != null) 

    { 

    SPWeb web = site.RootWeb; 

      if (web != null) 

      { 


       // Export List code segment



        Console.WriteLine("List Name:"); 

        string _listName = Console.ReadLine(); 

         if (!string.IsNullOrEmpty(_listName)) 

         { 

           list = web.Lists[_listName]; 



           if (list != null) 

           { 

             dataTable = new DataTable(); 



             //Adds Columns to SpreadSheet 

              InitializeExcel(list, dataTable); 



              string _schemaXML = list.DefaultView.ViewFields.SchemaXml; 



              if (list.Items != null && list.ItemCount > 0) 

              { 

               foreach (SPListItem _item in list.Items) 

               { 

                 DataRow dr = dataTable.NewRow(); 

                 foreach (DataColumn _column in dataTable.Columns) 

                 { 

if (dataTable.Columns[_column.ColumnName] != null && _item[_column.ColumnName] != null)

                  { 

dr[_column.ColumnName] = _item[_column.ColumnName].ToString();

                  } 

                 } 

                 dataTable.Rows.Add(dr); 



                } 

               } 



             } 

          } 

System.Web.UI.WebControls.DataGrid grid = new System.Web.UI.WebControls.DataGrid();

      grid.HeaderStyle.Font.Bold = true; 

      grid.DataSource = dataTable; 

      grid.DataBind(); 



      using (StreamWriter streamWriter = new StreamWriter("C:\\" + list.Title + ".xls", false, Encoding.UTF8)) 

      { 

       using (HtmlTextWriter htmlTextWriter = new HtmlTextWriter(streamWriter)) 

       { 

         grid.RenderControl(htmlTextWriter); 

       } 

      } 



         Console.WriteLine("File Created"); 



        #endregion 

       } 

      } 

    } 

    }); 

   } 

  } 

  catch (Exception ex) 

  { 

     Console.WriteLine("Error: " + ex.Message); 

  } 



  Console.ReadLine(); 

} 

// Create excel funution

public static void InitializeExcel(SPList list, DataTable _datatable)

{

if (list != null) 

{ 

 string _schemaXML = list.DefaultView.ViewFields.SchemaXml; 

 if (list.Items != null && list.ItemCount > 0) 

 { 

  foreach (SPListItem _item in list.Items) 

  { 

   foreach (SPField _itemField in _item.Fields) 

   { 

    if (_schemaXML.Contains(_itemField.InternalName)) 

    { 

      if (_item[_itemField.InternalName] != null) 

      { 

       if (!_datatable.Columns.Contains(_itemField.InternalName)) 

       { 

         _datatable.Columns.Add(new DataColumn(_itemField.StaticName, Type.GetType("System.String"))); 

       } 

      } 

     } 

    } 

   } 

  } 

 } 

} 

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM