Thursday, August 25, 2011

Client Object Model




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ClientOM = Microsoft.SharePoint.Client;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Wordprocessing;
using DocumentFormat.OpenXml.Packaging;

namespace ListPrinter
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void ShowButton_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            ListsListBox.Items.Clear();
            using(ClientOM.ClientContext ctx=new ClientOM.ClientContext(UrlTextBox.Text))
            {
                ClientOM.Web site=ctx.Web;
                ctx.Load(site);
                ctx.Load(site.Lists);
                ctx.ExecuteQuery();
                foreach (ClientOM.List list in site.Lists)
                {
                    ListsListBox.Items.Add(list.Title);
                    this.Cursor = Cursors.Default;
                }
            }
        }

        private void PrintButton_Click(object sender, EventArgs e)
        {
            if (ListsListBox.SelectedIndex > -1)
            {
                using (ClientOM.ClientContext ctx = new ClientOM.ClientContext(UrlTextBox.Text))
                {
                    string listTitle = ListsListBox.SelectedItem.ToString();
                    ClientOM.Web site = ctx.Web;
                    ctx.Load(site, s => s.Lists.Where(t => t.Title == listTitle));
                    ctx.ExecuteQuery();

                    ClientOM.List list = site.Lists[0];
                    ctx.Load(list, l => l.Fields.Where(f => f.Hidden == false && (f.CanBeDeleted || f.InternalName == "Title")));
                    ctx.ExecuteQuery();

                    ClientOM.ListItemCollection listItems = list.GetItems(ClientOM.CamlQuery.CreateAllFoldersQuery());
                    ctx.Load(listItems);
                    ctx.ExecuteQuery();

                    using (WordprocessingDocument package =
                WordprocessingDocument.Create("c:\\test1\\" + ListsListBox.SelectedItem.ToString() + ".docx",  WordprocessingDocumentType.Document))
                    {
                        Body body = new Body();
                        Table table = new Table();

                        //Columns
                        TableRow colRow = new TableRow();
                        foreach (ClientOM.Field field in list.Fields)
                        {
                            TableCell colCell = new TableCell();
                            colCell.Append(new Paragraph(new Run(new Text(field.Title))));
                            colRow.Append(colCell);
                        }
                        table.Append(colRow);

                        //Rows
                        foreach (ClientOM.ListItem item in listItems)
                        {
                            TableRow dataRow = new TableRow();

                            foreach (ClientOM.Field field in list.Fields)
                            {
                                TableCell dataCell = new TableCell();
                                string dataVal = string.Empty;
                                try
                                {
                                    dataVal = item[field.InternalName].ToString();
                                }
                                catch { dataVal = "-"; }
                                dataCell.Append(new Paragraph(new Run(new Text(dataVal))));
                                dataRow.Append(dataCell);
                            }

                            table.Append(dataRow);
                        }

                        body.Append(table);                       
                        package.AddMainDocumentPart();
                        package.MainDocumentPart.Document = new Document(body);
                        package.MainDocumentPart.Document.Save();
                        package.Close();
                    }
                }
                MessageBox.Show(" Document Created! ");
            }
        }
    }
}

No comments:

Post a Comment

Featured Post

Protect an API by using OAuth 2.0 with Azure Active Directory and API Management

Protect an API by using OAuth 2.0 with Azure Active Directory and API Management https://docs.microsoft.com/en-us/azure/api-management/api-...

Popular posts