Wie öffne ich eine Datei in C # und ändere ihre Eigenschaften?

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 Antworten

Microsoft bietet eine sehr nützliche kleine Assembly namens DSOFile. Mit einem Verweis darauf in Ihrem Projekt können Sie Office-Dokumenteigenschaften ändern. Es lässt Sie nicht unbedingt den Eigenschaftsdialog der Office-Datei öffnen, aber Sie könnten es natürlich simulieren.

Laut Microsoft:

Die Dsofile.dll-Dateien können Sie bearbeiten   Office-Dokumenteigenschaften, wenn Sie dies tun   Office nicht installiert haben

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

Hier ist ein Ausschnitt eines (sehr alten) VB-Codes, den ich vor Jahren benutzt habe. Tut mir leid, dass ich nicht in C# konvertiert habe und mir bewusst bin, dass es Teil einer Klasse ist, daher gibt es Verweise auf Instanzvariablen. Dennoch sollte es ziemlich einfach zu verstehen und zu Ihren eigenen Bedürfnissen zu verdecken sein:

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
hinzugefügt
Ich würde +5 das, wenn ich könnte. Große Antwort.
hinzugefügt der Autor torial, Quelle

Ich kann mir 2 Möglichkeiten vorstellen:

Ich würde mit der zweiten Option gehen, wenn Sie können, weil auf diese Weise müssen Sie nicht darauf angewiesen, dass Word auf dem System installiert ist.

5
hinzugefügt