Hogyan dolgozzunk dokumentumokkal a .NET-ban

Hogyan dolgozzunk dokumentumokkal a .NET-ban

Ez az útmutató bemutatja, hogyan kell használni a Document objektummodellt a Aspose.Words FOSS-ban a .NET számára: egy üres dokumentum létrehozása, egy meglévő biztonságos betöltése, a szakasz/törzs struktúrájának bejárása, dokumentumok kombinálása, és egy szerkesztési korlátozás alkalmazása. A Aspose.Words FOSS a .NET számára elérhető a NuGet segítségével vagy forráskódból építve.

Lépésről lépésre útmutató

Lépés 1: Szerezze be a könyvtárat

Klónozza a tárolót és építse Aspose.Words.sln Release konfigurációban, majd adjon hozzá egy projektreferenciát a Aspose.Words.csproj a saját .NET projektjéből. A teljes klónozási és építési parancsok a Telepítési útmutató. Miután hivatkozásra került, adja hozzá using Aspose.Words; bármely fájl tetejére, amely dokumentumokkal dolgozik.


Lépés 2: Dokumentum létrehozása vagy betöltése

Hívja a new Document() metódust egy üres dokumentumhoz, vagy adja meg a fájl elérési útját vagy a Streamt a Document(fileName)/Document(stream) konstruktorának, hogy meglévőt nyisson meg. Egy olyan túlterhelés, amely LoadOptions argumentumot fogad, lehetővé teszi jelszó megadását egy titkosított fájlhoz. Mielőtt betöltene egy olyan fájlt, amelynek formátumát még nem bízza meg, hívja a FileFormatUtil.DetectFileFormat(fileName)-t — ez egy FileFormatInfoet ad vissza, amely jelenti a felismert LoadFormatet, valamint azt, hogy a fájl IsEncrypted, HasDigitalSignature vagy HasMacros, így elutasíthatja a váratlan bemenetet, mielőtt a Document megpróbálná azt feldolgozni.


3. lépés: Tartalom szerkesztése DocumentBuilder használatával

DocumentBuilder egy Document-t csomagol be egy kurzorral, amelyet a fa szerkezetén keresztül mozgat, miközben tartalmat illesztesz. Write(text) és Writeln(text) szöveget illesztenek a kurzorhoz, a InsertParagraph() új bekezdést kezd. A formázás, amelyet a builder Font, ParagraphFormat, ListFormat és PageSetup tulajdonságain állítasz be, azokra vonatkozik, amiket ezután írsz. A kurzort áthelyezheted a MoveToDocumentStart(), MoveToDocumentEnd(), MoveToSection(sectionIndex), MoveToBookmark(bookmarkName) vagy MoveToParagraph(paragraphIndex, characterIndex) segítségével, és olvasd a CurrentNode / CurrentParagraph / CurrentSection értékeket, hogy megerősítsd, hol helyezkedik el a builder.


4. lépés: A szakasz és a test struktúrájának vizsgálata

A Document egy SectionCollection-t tesz elérhetővé a Document.Sections (plusz FirstSection / LastSection) segítségével. Minden Section pontosan egy Body-val rendelkezik, amelynek fő tartalma a Body.Paragraphs (egy ParagraphCollection) és a Body.Tables útján érhető el. A szöveg olvasásához vagy kereséséhez anélkül, hogy kézzel járnád be a csomópontokat, használd a Range-t, amely a Document, Section, Paragraph és egyéb csomópontokon elérhető — a Range.Text visszaadja a tiszta szöveget, a Range.Replace(pattern, replacement) pedig egy csak arra a tartományra korlátozott keres-és-csere műveletet hajt végre.


5. lépés: Két dokumentum egyesítése

Egy teljes dokumentum másolásához hívd meg a Document.Clone() függvényt. Egy adott tartalom egy Document példányból egy másikba való átviteléhez hívd meg a ImportNode(srcNode, isImportChildren)-t a cél dokumentumon, vagy hívd meg a Document.AppendDocument(srcDoc, importFormatMode)-t, hogy a forrásdokumentum minden szakaszát a jelenlegi végére fűzd hozzá. A DocumentBuilder.InsertDocument(srcDoc, importFormatMode) ugyanezt teszi, de a builder kurzoránál szúr be, nem a végén. Mindhárom esetben tudatosan válaszd ki a ImportFormatMode értéket — KeepSourceFormatting, UseDestinationStyles vagy KeepDifferentStyles —, mivel ez határozza meg, melyik dokumentum stílusai nyernek, amikor a kettő ütközik.


6. lépés: Szerkesztési korlátozás alkalmazása

Hívd meg a Document.Protect(type, password)-t egy ProtectionType értékkel — ReadOnly, AllowOnlyComments, AllowOnlyRevisions vagy AllowOnlyFormFields — hogy korlátozd, milyen szerkesztéseket fogad el a Word a dokumentumban. A Unprotect() (a megfelelő jelszóval vagy anélkül) eltávolítja a korlátozást. Ez csak a Wordben történő szerkesztést érinti; nem titkosítja a mentett fájlt. Ha csak a fájl megnyitásához szeretnél jelszót megkövetelni, állítsd be a OoxmlSaveOptions.Password-t a mentéskor.

Gyakori problémák és megoldások

Document(fileName) kivételt dob egy olyan fájl esetén, amely Wordben rendben megnyílik. A fájl formátuma nem támogatott ebben a kiadásban lévő betöltők által. Hívja FileFormatUtil.DetectFileFormat(fileName) először, és ellenőrizze a visszakapottat LoadFormat a betöltés megkísérlése előtt.

A dokumentumok között másolt tartalom rossz betűtípusokat vagy stílusokat vesz fel. A ImportFormatMode átadva AppendDocument or InsertDocument nem egyezik a vártakkal. Adja át KeepSourceFormatting or UseDestinationStyles kifejezetten, ahelyett, hogy alapértelmezettre támaszkodna.

Unprotect() úgy tűnik, nincs hatása. Vagy a dokumentum nem volt jelszóval védve (hívja Unprotect() argumentumok nélkül), vagy a megadott jelszó nem egyezik azzal, amellyel Protect() azt hívták meg.

A formázás, amelyet a DocumentBuilder nem jelenik meg a várt helyen. Az építő szintű formázás (Font, ParagraphFormat) csak a megírt tartalomra vonatkozik after ahol be van állítva. Mozgassa a kurzort, és állítsa be a formázást a hívás előtt Write/Writeln, nem utána.

Gyakran Ismételt Kérdések

Hogyan hozhatok létre egy új, üres Word dokumentumot?

Hívja a new Document() függvényt. Csomagolja be egy DocumentBuilder segítségével, hogy azonnal elkezdhesse a tartalom beszúrását.

Mi a különbség a Document.Clone() és a ImportNode között?

Clone() egy teljes dokumentumot másol egy új Document példányba. ImportNode(srcNode, isImportChildren) egyetlen csomópontot – és opcionálisan annak gyermekeit – hoz át egy dokumentumfából egy másikba, amit akkor használ, ha konkrét tartalmat szeretne kombinálni a teljes dokumentumok helyett.

Hogyan ellenőrizhetem biztonságosan egy fájl formátumát, mielőtt betölteném?

Hívja a FileFormatUtil.DetectFileFormat(fileName) (vagy a Stream túlterhelést), és vizsgálja meg a visszaadott FileFormatInfo LoadFormat, IsEncrypted, HasDigitalSignature és HasMacros tulajdonságait, mielőtt a fájlt átadná a Document függvénynek.

Hogyan olvashatok csak a bekezdéseket a dokumentum törzsén belül?

Használja a Body.Paragraphs gyűjteményt a szekció Body elemén, vagy a Body.GetChildNodes(nodeType, isDeep) -t más csomóponttípusokhoz.

Titkosítja a Document.Protect a mentett fájlt?

Nem — ez egy szerkesztési korlátozás, amelyet a Word alkalmaz a fájl megnyitásakor. Ahhoz, hogy jelszót kérjen a fájl megnyitásához, állítsa be a OoxmlSaveOptions.Password a Document.Save meghívásakor.

Lásd még:

 Magyar