Como faço para abrir um arquivo em c # e alterar suas propriedades?

I need to open a Microsoft Word 2003 file and change its file properties. Such as changing the Subject in the Summary Tab.
alt text http://www.jegsworks.com/Lessons/words/report/dialog-fileproperties-summary.gif

3

2 Respostas

A Microsoft fornece um pequeno assembly muito útil chamado DSOFile. Com uma referência a ele em seu projeto, você pode modificar as propriedades do documento do Office. Ele não necessariamente permitirá que você abra a caixa de diálogo de propriedades do arquivo do Office, mas certamente poderá simulá-lo.

Segundo a Microsoft:

Os arquivos Dsofile.dll permitem editar   Propriedades do documento do Office quando você faz   não tem o Office instalado

More details and a download link can be found at http://support.microsoft.com/kb/224351

Aqui está um trecho de código VB (muito antigo) que usei há muito tempo. Desculpe não ter convertido para C# e esteja ciente de que é parte de uma classe, portanto há referências a variáveis ​​de instância. Ainda assim, deve ser bem fácil de entender e se adaptar às suas próprias necessidades:

Private Sub ProcessOfficeDocument(ByVal fileName As String)
    Dim docDSO As New DSOFile.OleDocumentPropertiesClass
    Dim docTitle, docModified, docAuthor, docKeywords As String
    Try
        docDSO.Open(fileName, True)
        Dim docSummary As DSOFile.SummaryProperties = docDSO.SummaryProperties
        docTitle = docSummary.Title
        docAuthor = docSummary.Author
        docKeywords = docSummary.Keywords
        docModified = CStr(docSummary.DateLastSaved)

        If (Not String.IsNullOrEmpty(docTitle)) Then
            _Title = docTitle
        End If

        If (Not String.IsNullOrEmpty(docAuthor)) Then
            _Author = docAuthor
        End If

        If (Not String.IsNullOrEmpty(docModified)) Then
            _DateModified = DateTime.Parse(docModified)
        End If

    Catch ex As Exception
        'Do whatever you need to do here...'
    Finally
        If (Not docDSO Is Nothing) Then
            docDSO.Close()
        End If
    End Try
End Sub
8
adicionado
Eu tinha +5 isso se eu pudesse .. Grande resposta.
adicionado o autor torial, fonte

Eu posso pensar em duas maneiras de fazer isso:

Eu iria com a segunda opção se você puder, porque dessa forma você não precisa depender do Word sendo instalado no sistema.

5
adicionado