Cum să lucrați cu documentele în .NET

Cum să lucrați cu documentele în .NET

Acest ghid arată cum să lucrați cu modelul de obiecte Document în Aspose.Words FOSS pentru .NET: crearea unui document gol, încărcarea în siguranță a unuia existent, parcurgerea structurii sale secțiune/corp, combinarea documentelor și aplicarea unei restricții de editare. Aspose.Words FOSS pentru .NET este disponibil prin NuGet sau prin compilare din sursă.

Ghid pas cu pas

Pasul 1: Obțineți biblioteca

Clonați depozitul și construiți Aspose.Words.sln în configurația Release, apoi adăugați o referință de proiect la Aspose.Words.csproj din propriul dvs. proiect .NET. Comenzile complete de clonare și construire se găsesc în ghidul de instalare. Odată referențiat, adăugați using Aspose.Words; în partea de sus a oricărui fișier care lucrează cu documente.


Pasul 2: Creați sau încărcați un document

Apelați new Document() pentru un document gol, sau transmiteți o cale de fișier sau Stream constructorului Document(fileName) / Document(stream) pentru a deschide unul existent. O suprasarcină care acceptă un argument LoadOptions vă permite să furnizați o parolă pentru un fișier criptat. Înainte de a încărca un fișier al cărui format nu îl aveți deja încredere, apelați FileFormatUtil.DetectFileFormat(fileName) — acesta returnează un FileFormatInfo care raportează LoadFormat detectat și dacă fișierul este IsEncrypted, HasDigitalSignature sau HasMacros, astfel încât să puteți respinge intrarea neașteptată înainte ca Document să încerce să o analizeze.


Pasul 3: Creare conținut cu DocumentBuilder

DocumentBuilder învelește un Document cu un cursor pe care îl miști prin arbore în timp ce inserezi conținut. Write(text) și Writeln(text) inserează text la cursor, iar InsertParagraph() începe un paragraf nou. Formatarea setată pe proprietățile Font, ParagraphFormat, ListFormat și PageSetup ale builder-ului se aplică la tot ce scrii în continuare. Repoziționează cursorul cu MoveToDocumentStart(), MoveToDocumentEnd(), MoveToSection(sectionIndex), MoveToBookmark(bookmarkName) sau MoveToParagraph(paragraphIndex, characterIndex), și citește CurrentNode / CurrentParagraph / CurrentSection pentru a confirma unde este poziționat builder-ul.


Pasul 4: Inspectarea secțiunii și a structurii corpului

Un Document expune un SectionCollection prin Document.Sections (plus FirstSection / LastSection). Fiecare Section are exact un Body, al cărui conținut principal este accesibil prin Body.Paragraphs (un ParagraphCollection) și Body.Tables. Pentru a citi sau căuta text fără a parcurge manual nodurile, folosește Range disponibil pe Document, Section, Paragraph și alte noduri — Range.Text returnează textul său simplu, iar Range.Replace(pattern, replacement) efectuează o căutare-și-înlocuire limitată la acel interval.


Pasul 5: Combinarea a două documente

Pentru a copia un document întreg, apelează Document.Clone(). Pentru a aduce conținut specific dintr-o instanță Document în alta, apelează ImportNode(srcNode, isImportChildren) pe documentul destinație, sau apelează Document.AppendDocument(srcDoc, importFormatMode) pentru a adăuga fiecare secțiune a unui document sursă la finalul celui curent. DocumentBuilder.InsertDocument(srcDoc, importFormatMode) face același lucru, dar inserează la cursorul builder-ului în loc de la sfârșit. În toate cele trei cazuri, alege valoarea ImportFormatMode — KeepSourceFormatting, UseDestinationStyles sau KeepDifferentStyles — în mod deliberat, deoarece decide ce stiluri ale documentului au prioritate când cele două intră în conflict.


Pasul 6: Aplicarea unei restricții de editare

Apelează Document.Protect(type, password) cu o valoare ProtectionType — ReadOnly, AllowOnlyComments, AllowOnlyRevisions sau AllowOnlyFormFields — pentru a restricționa ce editări acceptă Word pentru document. Unprotect() (cu sau fără parola corespunzătoare) elimină restricția. Acest lucru afectează numai editarea în interiorul Word; nu criptează fișierul salvat. Pentru a cere o parolă doar pentru a deschide fișierul, setează OoxmlSaveOptions.Password la salvare.

Probleme comune și soluții

Document(fileName) aruncă o excepție pentru un fișier care se deschide fără probleme în Word. Formatul fișierului nu este unul suportat de încărcătoarele acestei ediții. Apelați FileFormatUtil.DetectFileFormat(fileName) mai întâi și verifică ce s-a returnat LoadFormat înainte de a încerca să încarci.

Conținutul copiat între documente preia fonturile sau stilurile greșite. The ImportFormatMode transmis către AppendDocument or InsertDocument nu se potrivește cu ceea ce te așteptai. Pass KeepSourceFormatting or UseDestinationStyles în mod explicit, în loc să te bazezi pe o valoare implicită.

Unprotect() pare să nu aibă niciun efect. Fie documentul nu a fost protejat cu o parolă (apelează Unprotect() fără argumente), fie parola furnizată nu corespunde cu cea Protect() cu care a fost apelat.

Formatarea aplicată prin DocumentBuilder nu apare acolo unde era așteptată. Formatarea la nivel de Builder (Font, ParagraphFormat) se aplică doar conținutului scris after este setată. Mută cursorul și setează formatarea înainte de a apela Write/Writeln, nu după.

Întrebări frecvente

Cum creez un document Word nou și gol?

Apelă new Document(). Înfășoară-l cu un DocumentBuilder pentru a începe să inserezi conținut imediat.

Care este diferența dintre Document.Clone() și ImportNode?

Clone() copiază un document întreg într-o nouă instanță Document. ImportNode(srcNode, isImportChildren) aduce un singur nod — și opțional copiii săi — din arborele unui document în altul, ceea ce se folosește pentru a combina conținut specific în loc de documente întregi.

Cum pot verifica în siguranță formatul unui fișier înainte de al încărca?

Apelă FileFormatUtil.DetectFileFormat(fileName) (sau suprasarcina Stream) și inspectează proprietățile LoadFormat, IsEncrypted, HasDigitalSignature și HasMacros ale FileFormatInfo returnat înainte de a trimite fișierul către Document.

Cum pot citi doar paragrafele din corpul unui document?

Folosește colecția Body.Paragraphs pe Body secțiunii, sau Body.GetChildNodes(nodeType, isDeep) pentru alte tipuri de noduri.

Încifrează Document.Protect fișierul salvat?

Nu — este o restricție de editare pe care Word o impune atunci când fișierul este deschis. Pentru a cere o parolă la deschiderea fișierului în sine, setează OoxmlSaveOptions.Password când apelezi Document.Save.

Vezi și:

 Română