Como a: Obter uma pasta de trabalho inteira ou um instantâneo
Este exemplo mostra como a get um pasta de trabalho inteiro, um instantâneo do arquivo inteiro ou apenas um instantâneo dos objetos no arquivo usando Serviços Web do Excel ou folhas visíveis. Obtendo o pasta de trabalho ou um instantâneo é útil se você desejar para salvar um copiar da atualizado armazená-lo em algum lugar, enviá-lo para alguém e SO on, pasta de trabalho.
Um instantâneo é um pasta de trabalho gerado por Serviços de cálculo do Excel, e ele representa o atual estado do pasta de trabalho na sessão Serviços do Excel esesshort. Alguns instantâneos (conhecidos como "Publicada instantâneos item") contêm apenas essas partes do arquivo Excel que um autor seleciona como visível ao salvar o arquivo para o servidor. Instantâneos contêm o layout e formatos da arquivo original e atualizado valores calculados pelo Serviços de cálculo do Excel, mas eles não contêm fórmulas Excel ou externo Conexões dados. Serviços do Excel abre o arquivo Excel no servidor, atualiza dados fontes e calcula todas as fórmulas Excel. Quando um usuário ou aplicativo solicita um instantâneo, Serviços do Excel, em seguida, gera e envia um instantâneo voltar através de serviço da Web API.
Você pode adquirir um instantâneo de um pasta de trabalho você já salvou o servidor, mesmo se você não tiver os direitos para acessar o real arquivo sobre o servidor.
Você usa método GetWorkbook para get tanto o pasta de trabalho inteiro ou um dos tipos de instantâneo. De exemplo, a seguinte codificar retorna um instantâneo do pasta de trabalho do Excel inteiro. Ele usa o WorkbookType.FullSnapshot WorkbookType.FullSnapshot enumeração como o segundo argumento no GetWorkbook método GetWorkbook.
byte[] workbook = xlService.GetWorkbook(sessionId, WorkbookType.FullSnapshot, out status);
O GetWorkbook GetWorkbook método retorna um matriz de bytes, o mesmo formato arquivo Excel como o carregados a sessão.
Para get um instantâneo dos itens que o autor pasta de trabalho do Excel selecionado como visível ao salvar o pasta de trabalho de Excel para o servidor, use o WorkbookType.PublishedItemsSnapshot WorkbookType.PublishedItemsSnapshot enumeração conforme mostrado aqui:
byte[] workbook = xlService.GetWorkbook(sessionId, WorkbookType.PublishedItemsSnapshot, out status);
Para get um instantâneo do pasta de trabalho inteiro em sua atual estado da sessão, use o WorkbookType.FullWorkbook WorkbookType.FullWorkbook enumeração:
byte[] workbook = xlService.GetWorkbook(sessionId, WorkbookType.FullWorkbook, out status);
O WorkbookType.FullWorkbook WorkbookType.FullWorkbook opção funciona somente se o usuário tenha aberto direitos para o arquivo; Se o usuário tem direitos somente para exibição, o chamar falhará.
Em alguns casos, sua codificar seria necessário para salvar o resultado de um GetWorkbook chamar GetWorkbook. Uma discussão sobre como salvar um pasta de trabalho, consulte o Como a: salvar uma pasta de trabalho Save a Workbook.
Para obter mais informações sobre o método GetWorkbook GetWorkbook e o WorkbookType enumeração WorkbookType, consulte o documentação de referência Serviços Web do Excel eswsshort.
Exemplo
O seguinte programa (um aplicativo console) recebe um argumento de linha de comando, que é o caminho para o pasta de trabalho sobre o servidor. O programa chama o serviço da Web para aberto o pasta de trabalho no servidor e get um instantâneo. Ele, em seguida, grava padrão-saída de modo que você pode redirecioná-lo para um novo arquivo instantâneo.
using System;
using System.IO;
using System.Text;
using System.Web.Services.Protocols;
// TODO: Change the using GetSnapshot.myServer02 statement
// to point to the Web service you are referencing.
using GetSnapshot.myServer02;
namespace GetSnapshot
{
class ExcelServicesSnapshot
{
static void Main(string[] args)
{
try
{
if (args.Length < 1)
{
Console.Error.WriteLine("Command line arguments should be: GetSnapshot [workbook_path] > [snapshot_filename]");
return;
}
// Instantiate the Web service and
// create a status array object.
ExcelService xlService = new ExcelService();
Status[] status;
xlService.Timeout = 600000;
// Set credentials for requests.
// Use the current user's logon credentials.
xlService.Credentials =
System.Net.CredentialCache.DefaultCredentials;
// Open the workbook, then call GetWorkbook
// and close the session.
string sessionId = xlService.OpenWorkbook(args[0], "en-US", "en-US", out status);
byte[] workbook = xlService.GetWorkbook(sessionId, WorkbookType.PublishedItemsSnapshot, out status);
// byte[] workbook = xlService.GetWorkbook(sessionId, WorkbookType.FullWorkbook, out status);
// byte[] workbook = xlService.GetWorkbook(sessionId, WorkbookType.FullSnapshot, out status);
// Close the workbook. This also closes the session.
status = xlService.CloseWorkbook(sessionId);
// Write the resulting Excel file to stdout
// as a binary stream.
BinaryWriter binaryWriter = new BinaryWriter(Console.OpenStandardOutput());
binaryWriter.Write(workbook);
binaryWriter.Close();
}
catch (SoapException e)
{
Console.WriteLine("SOAP Exception Message: {0}", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Exception Message: {0}", e.Message);
}
}
}
}
Use o seguinte linha de comando e argumentos para executar o aplicativo GetSnapshot:
GetSnapshot.exe [workbook_path] > [snapshot_filename]
Por exemplo:
C:\>GetSnapshot.exe http://myServer02/reports/reports/OriginalWorkbook.xlsx > SnapshotCopy.xlsx
Se você usar o linha de comando anterior exemplo, a ferramenta GetSnapshot coloca um novo arquivo de Diretório "c:\".
Dica
O pasta de trabalho que desejar para get um instantâneo de deve estar em uma de confiança localidade.
Programação robusta
Verifique se você adicionar um referência da Web para um site Serviços Web do Excel eswsshort que acessar a. Alterar o using GetSnapshot.myServer02;
declaração para apontar para o site serviço da Web você é referência.
Consulte também
Outros recursos
Etapa 1: Criar o projeto do cliente do serviço da Web
Etapa 2: Adicionar uma referência da Web
Etapa 3: acessar o serviço da Web
Etapa 4: Criando e testando o aplicativo
Walkthrough: desenvolvendo um aplicativo personalizado usando os serviços da Web Excel
Acessando o SOAP API
Como a: um local relação de confiança
Como a: relação de confiança locais de pasta de trabalho com scripts