C# SharePoint SharePoint 2010 SharePoint 2013

Consumindo um arquivo Excel no SharePoint Online com Excel REST API – Parte 2

Olá Pessoal!

Continuando nossa série de posts sobre como consumir dados de um arquivo Excel no SharePoint online utilizando Excel REST API, hoje vamos começar a montar um programinha para já requisitar os dados do nosso arquivo Excel. Para você que não viu a primeira parte da série, clique aqui e veja!

Nesse post vamos começar a desenvolver e criar uma aplicação Console para fazer a requisição de nosso dado e gravá-lo em um arquivo .txt para verificarmos o formato do dado gerado e demais informações, let´s do it!

Bom, então vamos lá, abra o Visual Studio. (Eu estou utilizando a versão 2015 RC)

Com o Visual Studio aberto, vamos criar um Projeto do tipo Console Application, vá em File > New Project > Aba Windows > Console Application.

Agora precisamos referenciar a biblioteca do Client Object Model do SharePoint, para isso, basta clicar com o botão direito em References (No Solution Explorer) > Add Rerence > Ir na pasta Browser e buscar na pasta C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI do seu computador. Caso você não encontre, pode baixar no link abaixo:

https://www.microsoft.com/en-us/download/details.aspx?id=35585

8

Após isso já podemos construir nosso código, que nesse caso vai recebendo os parâmetros e montando a url de requisição REST para podermos solicitar utilizando o HttpWebRequest.


//Conectando ao meu Tenant com SharePoint Online
Console.WriteLine("Digite a url do seu SharePoint:");

//Recuperando os dados do seu usuário
var url = Console.ReadLine();
Console.WriteLine("Digite seu usuário:");

var usuario = Console.ReadLine();

//Construindo os dados da sua senha
Console.WriteLine("Digite sua senha:");
var senha = new SecureString();

var sair = false;

while (true)
{
var chave = Console.ReadKey(true);

switch (chave.Key)
{
case ConsoleKey.Enter: sair = true; break;
case ConsoleKey.Escape: sair = true; return;
case ConsoleKey.Backspace:

if (senha.Length != 0)
senha.RemoveAt(senha.Length - 1);
break;
default: senha.AppendChar(chave.KeyChar); break;
}

if (sair) break;
}

senha.MakeReadOnly();

//Criando as credenciais de acesso ao SharePoint
var credenciais = new SharePointOnlineCredentials(usuario, senha);

Console.WriteLine();
Console.WriteLine("Iniciando requisição REST..................................");

//Recuperando o nome da Biblioteca onde está seu arquivo
Console.WriteLine();
Console.WriteLine("Digite o nome da Biblioteca onde está seu arquivo Excel:");

var biblioteca = Console.ReadLine();

//Recuperando o nome do Arquivo Excel (não esqueça de colocar a extensão
Console.WriteLine();
Console.WriteLine("Digite o nome do seu arquivo Excel:");
var nomeArquivo = Console.ReadLine();

//Recuperando o tipo de solicitação desejado (Ranges, Tables, Charts, PivotTables)
Console.WriteLine();
Console.WriteLine("Tipo de Requisição:");
var tipoRequisicao = Console.ReadLine();

//Recuperando dado que você deseja (Nome da Tabela, do Chart, do Range)
Console.WriteLine();
Console.WriteLine("Dado que você deseja:");
var dado= Console.ReadLine();

//Recuperando o Formato do dado (atom, html, json)
Console.WriteLine();
Console.WriteLine("Formato do dado:");
var formatodado = Console.ReadLine();

url += String.Format("/_vti_bin/ExcelRest.aspx/{0}/{1}/Model/{2}('{3}')?$format={4}", biblioteca, nomeArquivo, tipoRequisicao, dado, formatodado);

Explicando o código abaixo:

Com esse código estamos solicitando ao usuário que vá digitando as informações necessárias para que possamos montar a nossa uri de requisição REST da API com os parâmetros solicitados. Detalhe para o objeto “credenciais” que recebe um SharePointOnlineCredentials que é um objeto da classe Microsoft.SharePoint.Client, e também para a senha que precisa ser formatada nesse objeto SecureSring.

Continuando o código, iremos fazer a requisição REST via HttpWebRequest:


var requisicao = (HttpWebRequest)WebRequest.Create(url);
requisicao.Credentials = credenciais;

requisicao.Headers["X-FORMS_BASED_AUTH_ACCEPTED"] = "f";

try
{

var resposta = (HttpWebResponse)requisicao.GetResponse();
Stream responseStream = resposta.GetResponseStream();
StreamReader responseReader = new StreamReader(responseStream);

var resultado = responseReader.ReadToEnd();

Console.WriteLine("Gerando arquivo com resultado..............................................");

using (System.IO.StreamWriter file = new System.IO.StreamWriter(formatodado + ".txt", true))
file.WriteLine(resultado);

Console.WriteLine("Arquivo gerado com sucesso!");
}
catch(Exception ex)
{
Console.WriteLine("Erro::" + ex.Message);
}

Console.ReadLine();

No código acima estamos fazendo a requisição da nossa uri via HttpWebRequest e recuperando o resultado dessa requisição com o HttpWebResponse.

Usamos o cabeçalho abaixo para que a requisição entenda que estamos utilizando windows autentication nessa requisição.

X-FORMS_BASED_AUTH_ACCEPTED = "f"

 

A partir dai jogamos o resultado em um Stream e vamos salvar esse resultado em um arquivo .txt na pasta bin do nosso projeto… simples né?

Ponto de atenção é que se algum dos parâmetros estiver incorreto, o resultado da requisição será um erro 400 de BadRequest.

Rodando esse projeto e preenchendo os dados corretamente, o resultado é esse:

5

Nosso arquivo .txt é gerado:

6

 

E o conteúdo dele é o resultado da requisição da API REST (Nesse exemplo requisitei o formato ATOM Feed)

7

Nesse exemplo estamos salvando o resultado em um arquivo .txt, mas na prática podemos recuperar essa informação, transformar em objetos e trabalhá-la até de forma mais completa, que é o que veremos no próximo post.

Esse código está no GitHub, assim podemos ir contribuindo com ele e montando uma aplicação demo para todos utilizarem. Acessem lá:

https://github.com/douglasromao/Excel-Services-REST-API-SharePoint-Online

Gostaram? Espero que sim e aguardo vocês no próximo post, até lá!

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s