Cum deschid un fișier în C # și schimb proprietățile lui?

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 răspunsuri

Microsoft oferă un ansamblu foarte util, numit DSOFile. Cu o referință la aceasta în proiectul dvs., puteți modifica proprietățile documentului Office. Acesta nu vă va lăsa să deschideți dialogul de proprietăți al fișierului Office propriu-zis, dar cu siguranță îl puteți simula.

Potrivit Microsoft:

Fișierele Dsofile.dll vă permit să editați   Proprietățile documentelor de birou atunci când faceți   nu aveți instalat Office

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

Iată un fragment care conține codul VB (foarte vechi) pe care l-am folosit cu vârste în urmă. Ne pare rău că nu am convertit la C# și să fiți conștient de faptul că face parte dintr-o clasă, astfel că există referințe la variabilele de instanță. Totuși, ar trebui să fie destul de ușor de înțeles și de ascuns după propriile nevoi:

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
adăugat
Aș +5 dacă aș putea ... Mare răspuns.
adăugat autor torial, sursa

Mă pot gândi la 2 moduri de a face acest lucru:

Aș merge cu cea de-a doua opțiune dacă puteți, pentru că în acest fel nu trebuie să depindeți de instalarea Word pe sistem.

5
adăugat