¿Cómo abro un archivo en C # y cambio sus propiedades?

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 Respuestas

Microsoft proporciona un pequeño conjunto muy útil llamado DSOFile. Con una referencia en su proyecto, puede modificar las propiedades del documento de Office. No necesariamente le permitirá abrir el diálogo de propiedades del archivo de Office real, pero ciertamente podría simularlo.

De acuerdo con Microsoft:

Los archivos Dsofile.dll le permiten editar   Propiedades de documentos de Office cuando lo hace   no tiene Office instalado

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

Aquí hay un fragmento del código VB (muy antiguo) que utilicé hace años. Lo siento, no me he convertido a C# y sé consciente de que es parte de una clase, por lo que hay referencias a variables de instancia. Aún así, debería ser bastante fácil de entender y encubrir para sus propias necesidades:

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
agregado
Haría +5 esto si pudiera ... Gran respuesta.
agregado el autor torial, fuente

Puedo pensar en 2 maneras de hacer esto:

Me gustaría ir con la segunda opción si puedes, porque de esa manera no tienes que depender de que Word esté instalado en el sistema.

5
agregado