.NET içinde Belgelerle Nasıl Çalışılır
Bu kılavuz, Document nesne modelini Aspose.Words FOSS for .NET içinde nasıl kullanılacağını gösterir: boş bir belge oluşturma, mevcut bir belgeyi güvenli bir şekilde yükleme, bölüm/gövde yapısında gezinme, belgeleri birleştirme ve bir düzenleme kısıtlaması uygulama. Aspose.Words FOSS for .NET, NuGet üzerinden veya kaynak koddan derlenerek temin edilebilir.
Adım Adım Kılavuz
Adım 1: Kütüphaneyi Edinin
Depoyu klonlayın ve derleyin Aspose.Words.sln Release yapılandırmasında, ardından bir proje referansı ekleyin Aspose.Words.csproj kendi .NET projenizden. Tam klon ve derleme komutları şuradadır Kurulum kılavuzu. Referans verildikten sonra, şunu ekleyin using Aspose.Words; belgelerle çalışan herhangi bir dosyanın en üstüne.
Adım 2: Belge Oluşturun veya Yükleyin
Boş bir belge için new Document()‘ı çağırın, ya da mevcut bir belgeyi açmak için dosya yolunu veya Stream‘i Document(fileName) / Document(stream) yapıcısına gönderin. LoadOptions argümanını kabul eden bir aşırı yükleme, şifreli bir dosya için parola sağlamanıza izin verir. Formatına henüz güvenmediğiniz bir dosyayı yüklemeden önce FileFormatUtil.DetectFileFormat(fileName)‘i çağırın — bu, tespit edilen LoadFormat‘yi ve dosyanın IsEncrypted, HasDigitalSignature ya da HasMacros olduğunu bildiren bir FileFormatInfo döndürür, böylece Document ayrıştırmaya çalışmadan önce beklenmeyen girişi reddedebilirsiniz.
Adım 3: DocumentBuilder ile İçerik Oluştur
DocumentBuilder bir Documenti bir imleç ile sarar; bu imleci ağaç içinde içerik eklerken hareket ettirirsiniz. Write(text) ve Writeln(text) imleçte metin ekler, InsertParagraph() ise yeni bir paragraf başlatır. Oluşturucunun Font, ParagraphFormat, ListFormat ve PageSetup özelliklerinde ayarlanan biçimlendirme bir sonraki yazdığınız her şeye uygulanır. İmleci MoveToDocumentStart(), MoveToDocumentEnd(), MoveToSection(sectionIndex), MoveToBookmark(bookmarkName) veya MoveToParagraph(paragraphIndex, characterIndex) ile yeniden konumlandırın ve oluşturucunun nerede konumlandığını doğrulamak için CurrentNode / CurrentParagraph / CurrentSection okuyun.
Adım 4: Bölüm ve Gövde Yapısını İncele
Bir Document, Document.Sections aracılığıyla bir SectionCollectioni ortaya çıkarır (artı FirstSection / LastSection). Her Section tam olarak bir Body içerir; bunun ana içeriği Body.Paragraphs (bir ParagraphCollection) ve Body.Tables aracılığıyla erişilebilir. Düğümleri manuel olarak dolaşmadan metni okumak veya aramak için Document, Section, Paragraph ve diğer düğümlerde bulunan Range kullanın — Range.Text düz metnini döndürür, Range.Replace(pattern, replacement) ise yalnızca o aralıkta bir bul-ve-değiştir gerçekleştirir.
Adım 5: İki Belgeyi Birleştir
Tam bir belgeyi kopyalamak için Document.Clone() çağırın. Bir Document örneğinden belirli içeriği başka birine getirmek için hedef belge üzerinde ImportNode(srcNode, isImportChildren) çağırın veya kaynak belgenin her bölümünü mevcut belgenin sonuna eklemek için Document.AppendDocument(srcDoc, importFormatMode) çağırın. DocumentBuilder.InsertDocument(srcDoc, importFormatMode) aynı şeyi yapar ancak sonuna eklemek yerine oluşturucunun imlecine ekler. Üç durumda da ImportFormatMode değerini — KeepSourceFormatting, UseDestinationStyles veya KeepDifferentStyles — bilinçli seçin; çünkü bu, iki belge çarpıştığında hangi belgenin stillerinin üstün geleceğini belirler.
Adım 6: Bir Düzenleme Kısıtlaması Uygula
Document.Protect(type, password)‘ı bir ProtectionType değeri — ReadOnly, AllowOnlyComments, AllowOnlyRevisions veya AllowOnlyFormFields — ile çağırarak belgenin Word tarafından kabul edilen düzenlemelerini kısıtlayın. Unprotect() (eşleşen şifreyle ya da şifresiz) kısıtlamayı kaldırır. Bu yalnızca Word içindeki düzenlemeyi etkiler; kaydedilen dosyayı şifrelemez. Dosyayı yalnızca açmak için bir şifre gerektirmek istiyorsanız, kaydederken OoxmlSaveOptions.Password ayarlayın.
Yaygın Sorunlar ve Çözümler
Document(fileName) Word’de sorunsuz açılan bir dosya için bir istisna fırlatır. Dosyanın formatı, bu sürümün yükleyicileri tarafından desteklenmiyor. Çağırın FileFormatUtil.DetectFileFormat(fileName) ilk olarak ve döndürüleni kontrol edin LoadFormat yüklemeyi denemeden önce.
Belgeler arasında kopyalanan içerik yanlış yazı tiplerini veya stilleri alır. Bu ImportFormatMode şuna geçirilen AppendDocument or InsertDocument beklediğinizle eşleşmiyor. Geçirin KeepSourceFormatting or UseDestinationStyles açıkça varsayılan bir değere güvenmek yerine.
Unprotect() etki göstermiyor gibi görünüyor. Ya belge bir şifreyle korunmamıştı (çağrı Unprotect() argüman olmadan çağrıldıysa), ya da sağlanan şifre, kullanılan şifreyle eşleşmiyor Protect() ile çağrıldı.
Şu aracılığıyla uygulanan biçimlendirme DocumentBuilder beklenen yerde görünmüyor. Builder düzeyinde biçimlendirme (Font, ParagraphFormat) yalnızca yazılan içeriğe uygulanır after ayarlandığında. İmleci taşıyın ve çağırmadan önce biçimlendirmeyi ayarlayın Write/Writeln, sonra değil.
Sıkça Sorulan Sorular
Yeni, boş bir Word belgesi nasıl oluşturabilirim?
Çağır new Document(). Bir DocumentBuilder ile sararak içeriği hemen eklemeye başlayın.
Document.Clone() ile ImportNode arasındaki fark nedir?
Clone() bir belgeyi tamamen yeni bir Document örneğine kopyalar. ImportNode(srcNode, isImportChildren) tek bir düğümü — ve isteğe bağlı olarak çocuklarını — bir belgenin ağacından başka bir belgeye getirir; bu, tüm belgeler yerine belirli içeriği birleştirmek için kullandığınız şeydir.
Bir dosyayı yüklemeden önce formatını güvenli bir şekilde nasıl kontrol edebilirim?
FileFormatUtil.DetectFileFormat(fileName)‘ı (veya Stream aşırı yüklemesini) çağırın ve dosyayı Document‘e geçirmeden önce döndürülen FileFormatInfo‘nin LoadFormat, IsEncrypted, HasDigitalSignature ve HasMacros özelliklerini inceleyin.
Bir belgenin gövdesindeki sadece paragrafları nasıl okuyabilirim?
Bölümün Body üzerindeki Body.Paragraphs koleksiyonunu kullanın, ya da diğer düğüm tipleri için Body.GetChildNodes(nodeType, isDeep) kullanın.
Document.Protect kaydedilen dosyayı şifreliyor mu?
Hayır — bu, dosya açıldığında Word’ün uyguladığı bir düzenleme kısıtlamasıdır. Dosyanın kendisini açmak için bir şifre gerektirmek istiyorsanız, OoxmlSaveOptions.Password ayarlayın Document.Save çağrıldığında.