Acesso a dados em documentos no servidor

Você pode programar com os dados em uma personalização da nível sem precisar usar o modelo de objeto do Microsoft Office Word e Microsoft Office Excel.Isso significa que você pode acessar os dados que estão contidos em um documento em um servidor que não tenha palavra ou instalar o excel.Por exemplo, o código em um servidor (por exemplo, em uma página de ASP.NET ) pode personalizar os dados em um documento e enviar o documento personalizado ao usuário final.Quando o usuário final abre o documento, o código de associação de dados no assembly de solução associa dados personalizados no documento.Isso é possível porque os dados no documento são separados de interface do usuário.Para obter mais informações, consulte Dados armazenados em cache no nível do documento personalizações.

Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento para os seguintes aplicativos: Excel 2013 e Excel 2010; Word 2013 e Word 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

Cache de dados para uso em um servidor

Para armazenar em cache um objeto de dados em um documento, marque-o em tempo de design com o atributo de CachedAttribute , ou usar em tempo de execução do método StartCaching de um item host.Quando você armazena em cache um objeto de dados em um documento, Visual Studio Tools for Office Runtime serializa o objeto em uma cadeia de caracteres de XML que está armazenada no documento.Os objetos devem satisfazer certos requisitos ser qualificados para armazenar em cache.Para obter mais informações, consulte Cache de dados.

o código do servidor pode manipular todos os objetos de dados no cache de dados.Os controles que são associados às instâncias dos dados armazenados em cache são sincronizados com a interface do usuário, de modo que as alterações do servidor que são feitas nos dados aparecem automaticamente quando o documento é aberto no cliente.

Acessando dados no cache

Você pode acessar dados no cache de aplicativos fora do Office, por exemplo de um aplicativo de console, um aplicativo windows forms, ou de uma página da Web.O aplicativo que acessa os dados armazenados em cache deve ter confiança total; um aplicativo da Web que tenha confiança parcial não pode inserir, para recuperar ou modificar os dados que são armazenados em cache em um documento do Office.

O cache de dados é acessível com uma hierarquia das coleções que são expostos pela propriedade de CachedData da classe de ServerDocument :

O exemplo de código a seguir demonstra como acessar uma cadeia de caracteres em cache na classe de Sheet1 de um projeto de pasta de trabalho do Excel.Este exemplo é parte de um exemplo maior fornecido para o método de ServerDocument.Save .

serverDocument1 = New ServerDocument(documentPath)
Dim hostItem1 As CachedDataHostItem = _
    serverDocument1.CachedData.HostItems("ExcelWorkbook1.Sheet1")
Dim dataItem1 As CachedDataItem = hostItem1.CachedData("CachedString")
serverDocument1 = new ServerDocument(documentPath);
CachedDataHostItem hostItem1 = 
    serverDocument1.CachedData.HostItems["ExcelWorkbook1.Sheet1"];
CachedDataItem dataItem1 = hostItem1.CachedData["CachedString"];

Modificando dados no cache

Para modificar um objeto de dados armazenados em cache, você geralmente executa as seguintes etapas:

  1. Desserializar XML a representação de objeto armazenado em cache em uma nova instância do objeto.você pode acessar XML usando a propriedade de Xml de CachedDataItem que representa o objeto de dados armazenados em cache.

  2. Faça alterações em esta cópia.

  3. Serialize o objeto modificado de volta para o cache de dados usando uma das seguintes opções:

    • Se você deseja serializar automaticamente as alterações, use o método de SerializeDataInstance .Este método usa o formato de serialização DiffGramDataSet, DataTable, e objetos tipados do conjunto de dados no cache de dados.O formato de DiffGram garante que as alterações no cache de dados em um documento off-line são enviadas ao servidor corretamente.

    • Se você deseja executar sua própria serialização para alterações aos dados armazenados em cache, você pode escrever diretamente para a propriedade de Xml .Especificar o formato de DiffGram se você usar DataAdapter para atualizar um banco de dados com as alterações feitas a dados em DataSet, em DataTable, ou em um dataset tipado.Caso contrário, DataAdapter atualizar o banco de dados adicionando novas linhas em vez de modificar linhas existentes.

427e3fw2.collapse_all(pt-br,VS.110).gifModificando dados sem Desserialização o valor atual

Em alguns casos, convém alterar o valor do objeto armazenado em cache sem primeiro desserialização o valor atual.Por exemplo, você pode fazer isso se você está alterando o valor de um objeto que tenha um tipo simples, como uma cadeia de caracteres ou um inteiro, ou se você estiver inicializando DataSet armazenado em cache em um documento em um servidor.Em esses casos, você pode usar o método de SerializeDataInstance sem primeiro desserialização o valor atual do objeto armazenado em cache.

O exemplo de código a seguir demonstra como alterar o valor de uma cadeia de caracteres em cache na classe de Sheet1 de um projeto de pasta de trabalho do Excel.Este exemplo é parte de um exemplo maior fornecido para o método de ServerDocument.Save .

serverDocument1 = New ServerDocument(documentPath)
Dim hostItem1 As CachedDataHostItem = _
    serverDocument1.CachedData.HostItems("ExcelWorkbook1.Sheet1")
Dim dataItem1 As CachedDataItem = hostItem1.CachedData("CachedString")

If dataItem1 IsNot Nothing AndAlso _
    Type.GetType(dataItem1.DataType).Equals(GetType(String)) Then

    dataItem1.SerializeDataInstance("This is the new cached string value.")
    serverDocument1.Save()
End If
serverDocument1 = new ServerDocument(documentPath);
CachedDataHostItem hostItem1 = 
    serverDocument1.CachedData.HostItems["ExcelWorkbook1.Sheet1"];
CachedDataItem dataItem1 = hostItem1.CachedData["CachedString"];

if (dataItem1 != null &&
    Type.GetType(dataItem1.DataType) == typeof(string))
{
    dataItem1.SerializeDataInstance("This is the new cached string value.");
    serverDocument1.Save();
}

427e3fw2.collapse_all(pt-br,VS.110).gifValores nulos de alteração no cache de dados

O cache de dados não armazena os objetos que têm o valor null quando o documento é salvo e fechado.Essa limitação tem várias conseqüências quando você modifica dados armazenados em cache:

  • Se você definir qualquer objeto no cache de dados para o valor null, todos os objetos em cache de dados será automaticamente definida como null quando o documento está aberto, e o cache de dados inteiro será desmarcado quando o documento é salvo e fechado.Isto é, todos os objetos armazenados em cache serão removidos do cache de dados, e a coleção de CachedData estará vazia.

  • Se você criar uma solução com objetos de null no cache de dados e você deseja inicializar esses objetos usando a classe de ServerDocument antes do documento está aberto pela primeira vez, você deve garantir que você inicializa todos os objetos em cache de dados.Se você inicializar alguns dos objetos, todos os objetos será definido como null quando o documento está aberto, e o cache de dados inteiro será desmarcado quando o documento é salvo e fechado.

Acessando datasets tipados no cache

Se você deseja acessar os dados em um dataset tipado de uma solução do Office e de um aplicativo fora do Office, como um aplicativo de formulários do windows ou um projeto de ASP.NET , você deve definir o dataset tipado em um conjunto separado que é referenciado em ambos os projetos.Se você adicionar o dataset tipado para cada projeto usando Assistente para Configuração de Fonte de Dados ou O dataset designer, o.NET Framework manipulará os datasets tipados para os dois projetos como tipos diferentes.Para obter mais informações sobre a criação datasets tipados, consulte Como: criar um Dataset tipado.

Consulte também

Conceitos

Acesso a dados em documentos no servidor

Dados armazenados em cache no nível do documento personalizações