Os arquivos Dsofile permite editar propriedades de documento do Office quando você não tiver o Office instalado


Sumário


O arquivo de exemplo Dsofile é um componente de ActiveX em processo para programadores que usam o Microsoft Visual Basic .NET ou o Microsoft.NET Framework. Você pode usar isso em seus aplicativos personalizados para ler e editar as propriedades de documento OLE que estão associadas com os arquivos do Microsoft Office, como o seguinte:
  • Pastas de trabalho do Microsoft Excel
  • Apresentações do Microsoft PowerPoint
  • Documentos do Microsoft Word
  • Projetos do Microsoft Project
  • Desenhos do Microsoft Visio
  • Outros arquivos que são salvos no formato de armazenamento estruturado OLE
O arquivo de exemplo Dsofile é escrito em Microsoft Visual C++. O arquivo de exemplo Dsofile demonstra como usar a interface OLE32 IPropertyStorage para acessar as propriedades estendidas de arquivos de armazenamento estruturado OLE. O componente converte os dados para tipos de dados amigável de automação fácil de usar por linguagens de programação como Visual Basic 6.0, Visual Basic .NET e C# de alto nível. O arquivo de exemplo Dsofile é fornecido com o código-fonte completo e inclui clientes de exemplo escritos em Visual Basic 6.0 e Visual Basic .NET 2003 (7.1).

Mais informações


Exemplo de componente ActiveX para download

Os seguintes arquivos estão disponíveis para download no Centro de Download da Microsoft:
Você tem um direito de royalties para usar, modificar, reproduzir e distribuir o componente de arquivo de exemplo Dsofile e arquivos código-fonte C++ de qualquer maneira que útil. Isso é desde que você concorda que a Microsoft tem nenhuma garantia, sem obrigações e nenhuma responsabilidade para seu uso ou para as informações fornecidas. O código-fonte e de componente é fornecido gratuitamente apenas para fins educacionais e é considerado uma amostra. Se você deseja usar o componente ou qualquer parte dele, em uma solução de produção, você é responsável por revisar, para modificar, para testar e para o componente de suporte por conta própria.

Aviso: O Dsofile, o código-fonte e os exemplos associados são fornecidos "como estão" sem garantia de qualquer tipo, expressas ou implícitas, inclusive mas não limitada às garantias implícitas de comercialização e/ou adequação para uma finalidade específica. Use por seu próprio risco.

Observação: Para ler e editar documentos do Office 2007 usando este exemplo, você deve instalar o pacote de compatibilidade do Office 2007. Para obter mais informações, consulte a seção "Recursos".

Informações sobre propriedades de documento OLE

Todos os documentos compostos OLE podem armazenar informações adicionais sobre o documento em conjuntos de propriedades persistentes. Esses são chamados coletivamente de "Propriedades do documento resumo." Esses conjuntos de propriedades são gerenciados pelo "COM/OLE" para que clientes de terceiros podem ler estas informações sem o auxílio do aplicativo principal é responsável para o arquivo.


Para ajudar os desenvolvedores que estejam interessados em ler as propriedades do documento, oferecemos duas interfaces para gerenciar conjuntos de propriedades a seguir:
  • IPropertySetStorage
  • IPropertyStorage
No entanto, algumas linguagens de programação de alto nível podem ter problemas ao usar essas interfaces, porque as interfaces não são compatíveis com a automação. Para resolver esse problema, os desenvolvedores podem usar uma DLL ActiveX, tal "DsoFile amostra" para ler e gravar as propriedades mais comuns que são usadas em documentos compostos OLE. Isso se aplica particularmente aqueles que são usadas por aplicativos do Microsoft Office.


Usar o componente DsoFile do seu aplicativo personalizado

O arquivo de exemplo Dsofile lê e grava as propriedades padrão e as propriedades personalizadas de qualquer arquivo de "Armazenamento estruturado OLE". Isso inclui, mas não está limitado a, o seguinte:
  • Documentos do Word
  • Pastas de trabalho do Excel
  • Apresentações do PowerPoint
Por causa do tamanho e da velocidade do arquivo de exemplo Dsofile, a DLL pode ser muito mais eficiente do que tentar automatizar o Office para ler as propriedades do documento.


Para usar o componente, defina uma referência à biblioteca de tipos Dsofile é denominada "DSO OLE documento propriedades leitor 2.1." O componente pode ser usado para chamadas atrasadas e chamadas early bound. o arquivo de exemplo Dsofile tem apenas um objeto que pode ser criado. Esse objeto é denominado OleDocumentProperties. O objeto OleDocumentProperties fornece acesso às propriedades de documento OLE de um arquivo carregado usando o método Open . Todas as propriedades são lidas e armazenadas em cache ao abrir. Todas as propriedades são então disponibilizadas através do objeto OleDocumentProperties para edição. As propriedades são somente gravadas no arquivo quando você chamar Salvar. Quando você tiver terminado editar um arquivo, chamada Fechar para liberar o arquivo bloquear.

As propriedades OLE padrão e as propriedades de resumo do Office padrão podem ser obtidas da propriedade SummaryProperties . Propriedades personalizadas são listadas na coleção CustomProperties . Cada propriedade personalizada tem um nome exclusivo. Cada propriedade personalizada está acessível na coleção com esse nome. Você pode adicionar ou remover propriedades individuais. Além disso, você pode enumerar toda a coleção inteira usando a sintaxe "For Each" no Visual Basic .NET.


Quando o métodoOpen for chamado, o objeto OleDocumentProperties chamado Dsofile tenta abrir o documento para acesso de leitura e gravação acesso. Se o arquivo tiver sido marcado como somente leitura ou se os arquivos estiver localizado em um compartilhamento de NTFS só fornece acesso de leitura, a chamada pode falhar. Você pode receber a seguinte mensagem de erro:
Erro 70: Permissão negada
Se você deseja abrir o arquivo para acesso somente leitura, passe True para o parâmetro ReadOnly o método Open . Além disso, você pode passar o sinalizador dsoOptionOpenReadOnlyIfNoWriteAccess se desejar Dsofile para tentar abrir o arquivo para edição. No entanto, se o Dsofile não consegue acessar porque o arquivo é somente leitura ou está bloqueado por outro processo, abra uma cópia somente leitura. Em seguida, você pode verificar se o documento é aberto como somente leitura, usando a propriedade IsReadOnly .

Depois que uma propriedade foi alterada ou modificada, você pode usar a propriedade IsDirty para verificar se o conjunto de propriedades deve ser salvo. As alterações feitas não são gravadas no arquivo até Salvar é chamado. Se você não chamar Salvar, suas alterações são perdidas em Fechar.

Além disso, as mensagens de erro de automação padrão, Dsofile pode retornar uma das seguintes mensagens de erro personalizadas quando algo dá errado:
Erro-2147217151 (& H80041101): você deve abrir um documento para executar a ação solicitada.
Erro-2147217150 (& H80041102): você deve fechar o documento atual antes de abrir uma nova no mesmo objeto.
Erro-2147217149 (& H80041103): O documento está em uso por outro programa e não pode ser aberto para acesso de leitura / gravação.
Erro-2147217148 (& H80041104): O documento não é um arquivo OLE e não suporta propriedades do documento estendidas.
Erro-2147217147 (& H80041105): O comando não está disponível porque o documento foi aberto no modo somente leitura.
Erro-2147217146 (& H80041106): O comando está disponível somente os arquivos de armazenamento estruturado OLE.
Erro-2147217145 (& H80041107): O objeto não está conectado ao documento (ele foi removido ou o documento foi fechado).
Erro-2147217144 (& H80041108): não é possível acessar a propriedade porque o conjunto pertence a não existe.
Erro-2147217143 (& H80041109): A propriedade solicitada não existe na coleção.
Erro-2147217142 (& H8004110A): um item com esse nome já existe na coleção.

Conjuntos de propriedades Unicode

Conjuntos de propriedades OLE pode armazenar sequências de caracteres no formato Unicode ou no formato de sequência de caracteres multibyte (MBCS) com uma página de código especificada. O Dsofile pode ler e gravar qualquer tipo de conjunto de propriedades. Por padrão, o Dsofile seleciona Unicode quando Dsofile cria novos conjuntos, como ao adicionar propriedades a um arquivo que possui nenhum. Se você desejar Dsofile para criar o conjunto usando o formato MBCS para cadeias de caracteres, você pode passar o sinalizador dsoOptionUseMBCStringsForNewSets o método Open .

Como conjuntos de propriedades existentes podem usar o formato MBCS, Dsofile tem que armazenar sequências de caracteres no mesmo formato durante uma operação Salvar. Se você tentar adicionar uma sequência de caracteres que não consegue mapear para a página de código para o conjunto de propriedades, a operação poderá falhar. Portanto, limite suas sequências de caracteres que você sabe que existe na página de código do sistema que fez o arquivo. Como alternativa, certifique-se de que todos os conjuntos de propriedades estão no formato Unicode antes de editar essas propriedades.

Observação: O Dsofile não converte uma propriedade MBCS existente definida como Unicode. Você precisa modificar o exemplo se você deseja adicionar essa capacidade.

Etapas para configurar e testar a DLL

O programa de instalação auto-extraível instala e registra o componente Dsofile em um local que você deseja. A instalação de extração automática também instala dois aplicativos de teste de .NET do Visual Basic que demonstram como usar o componente e o código-fonte.

Se você mover a DLL para outro local ou para outro computador, você precisa registrar novamente a DLL antes de usá-lo novamente. Para fazer isso, digite regsvr32 [filepath]\dsofile.dll na caixa de diálogo Executar no menu Iniciar .


Para executar o exemplo, execute essas etapas:

Para uma demonstração do Visual Basic 6.0

  1. Abra o projeto de exemplo do Visual Basic 6.0 é chamado da seguinte maneira:

    .\Source\Vb6Demo\PropDemo.vbp
  2. Certifique-se de que o Dsofile foi referenciado corretamente. Para fazer isso, selecione referências no menu projeto . Verifique se uma referência está definida para DSO OLE documento propriedades leitor 2.1.
  3. Pressione F5 para executar o projeto.
  4. Quando você for solicitado a abrir um arquivo de documento composto, selecione um arquivo apropriado e observe que suas propriedades de documento são exibidos.

Para um Visual Basic 2003 (7.1) ou para uma demonstração do Visual Basic 2005 (8.0)

  1. Abra o projeto Visual Basic 7.1 chamado da seguinte maneira:

    .\Source\Vb7Demo\FilePropDemoVB7.sln

    Você pode abrir este projeto no 7.1 ambos Visual Basic no Visual Studio .NET 2003 ou no Visual Basic 8.0 no Visual Studio 2005.
  2. Se você for solicitado a converter automaticamente a solução para o formato 8.0, clique em Sime siga o Assistente para converter o projeto.
  3. Pressione F5 para compilar e executar o projeto Visual Basic.
  4. Quando o formulário for exibido, clique em Abrir.
  5. Selecione um arquivo do Office apropriado e clique em Okey.

    Observe que as propriedades do documento do arquivo Office são exibidos na caixa de diálogo. Você pode editar as propriedades do documento.

Referências


O componente Dsofile foi atualizado para ler e editar propriedades de documento para arquivos do Microsoft Office 2007, se você instalar também o pacote de compatibilidade do Office 2007. Para baixar e instalar o pacote de compatibilidade, visite o seguinte site da Microsoft:Para obter informações adicionais sobre como ler propriedades de documento do Visual C++, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:

186898 como ler propriedades de documento composto diretamente com VC + +