Genel Bakış
Elektronik tablo belgeleri satır ve sütunlar içinde tablo biçiminde veri içeren belgelerdir. Aynı zamanda çalışma kitapları olarak da bilinirler. Elektronik tablo belgelerinin birçok formatı vardır — Office Open XML (XLSX, XLSM vb.), Microsoft Excel Binary File Format (XLS, XLT), OpenDocument Spreadsheet formatı (ODS, FODS, OTS), metin tabanlı ayırıcı‑delimli formatlar (CSV, TSV vb.) ve benzerleri. Tüm bu formatlar, sözde Elektronik Tablo formatları ailesini oluşturur. GroupDocs.Viewer, neredeyse tüm elektronik tablo formatlarını içe aktarabilir ve bunları HTML, PDF, PNG ve JPEG’e dönüştürerek (render) sunabilir. Bu makale, bunu nasıl yapacağınızı, hangi seçeneklerin mevcut olduğunu ve ne zaman, neden kullanılmaları gerektiğini açıklar.
Temel kullanım
İlk olarak seçeneklerden bahsetmemiz gerekir. Genel API içinde ayrı bir sınıf bulunur: SpreadsheetOptions – GroupDocs.Viewer.Options içinde. Bu sınıf, Elektronik Tablo formatları ailesinin render edilmesini ayarlamak için özel olarak tasarlanmıştır. Dört görüntüleme seçeneğinin tümünde SpreadsheetOptions özelliği üzerinden erişilebilir:
- HtmlViewOptions.SpreadsheetOptions – bir Elektronik Tablo belgesini HTML’e render ederken,
- PdfViewOptions.SpreadsheetOptions – bir Elektronik Tablo belgesini PDF’e render ederken,
- PngViewOptions.SpreadsheetOptions – bir Elektronik Tablo belgesini PNG’ye render ederken,
- JpgViewOptions.SpreadsheetOptions – bir Elektronik Tablo belgesini JPEG’e render ederken.
Açıkça belirtilmediği sürece, SpreadsheetOptions özelliğinin varsayılan değeri, bu makalede daha sonra açıklanacak olan SpreadsheetOptions sınıfının bir örneğidir.
Bir bakışta, GroupDocs.Viewer ile bir Elektronik Tablo belgesini render etmek son derece kolaydır ve diğer tüm formatlarla aynıdır — bir ViewOptions nesnesi oluşturun, belirtilen giriş Elektronik Tablo belgesiyle bir Viewer nesnesi oluşturun ve Viewer.View(viewOptions) metodunu çağırın. Aşağıdaki kod örneği, tek bir giriş Elektronik Tablo dosyasını dört çıktı formatına (HTML, PDF, PNG ve JPEG) render etmeyi gösterir. Lütfen, seçenek sınıflarının örneklerini oluşturmanın dışında, elektronik tabloyla ilgili hiçbir ayarlama yapılmadığını, yani tüm elektronik tablo seçeneklerinin varsayılan değerlerde olduğunu unutmayın.
using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;
// ...
HtmlViewOptions htmlOptions = HtmlViewOptions.ForEmbeddedResources("worksheet_{0}.html");
PdfViewOptions pdfOptions = new PdfViewOptions("Output_spreadsheet.pdf");
PngViewOptions pngOptions = new PngViewOptions("worksheet_{0}.png");
JpgViewOptions jpegOptions = new JpgViewOptions("worksheet_{0}.jpeg");
using (Viewer viewer = new Viewer("spreadsheet.xlsx"))
{
viewer.View(htmlOptions);
viewer.View(pdfOptions);
viewer.View(pngOptions);
viewer.View(jpegOptions);
}
Şimdi çalışma sayfalarından (worksheets) bahsedelim. Her elektronik tablo en az bir çalışma sayfasına sahiptir. Microsoft Excel gibi çoğu tablo işleme yazılımında çalışma sayfaları sekme olarak gösterilir. Bazı elektronik tablo formatları yalnızca tek bir çalışma sayfasına sahip olabilir; buna örnek olarak tüm metin tabanlı ayırıcı‑delimli formatlar (CSV, TSV vb.) verilebilir.
Varsayılan olarak GroupDocs.Viewer, verilen elektronik tablodaki tüm çalışma sayfalarını render eder. Ancak bu davranış değiştirilebilir. Viewer.View() metodunun bir aşırı yüklemesi vardır; bu aşırı yükleme, 2. parametre olarak bir sayfa numarası dizisi (Int32[] pageNumbers) alır. Bu parametre kullanıldığında yalnızca belirtilen sayfalar render edilir. Bu parametre evrenseldir ve sayfalara sahip tüm desteklenen formatlarda uygulanır; Elektronik Tablo formatları ailesi bağlamında ise tam olarak görüntülenecek çalışma sayfası numaralarını tanımlar.
Lütfen, sayfa numaralandırmasının genel olarak ve çalışma sayfası numaralandırmasının özellikle 1‑tabanlı olduğunu, yani “0” değil “1” den başladığını unutmayın.
Aşağıdaki örnek, 3 çalışma sayfasına sahip bir elektronik tabloda 1. ve 3. çalışma sayfasını PNG’ye render etmeyi gösterir.
using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;
// ...
PngViewOptions pngOptions = new PngViewOptions("worksheet_{0}.png");
using (Viewer viewer = new Viewer("spreadsheet.xlsx"))
{
viewer.View(pngOptions, 1, 3);
}
Çalışma sayfalarını sayfalara bölme
GroupDocs.Viewer, belgeleri sayfalara render eder; burada bir sayfa, görüntüleme alanına ya da A4 kağıdına benzer, nispeten küçük bir dikdörtgen alan olarak anlaşılır. Öte yandan, çalışma sayfaları çok büyük olabilir. Özellikle artık kullanılmayan XLS formatı maksimum 256 sütun ve 65 536 satır desteklerken, yeni XLSX (Office Open XML Workbook) formatı ve Microsoft Excel 16384 sütun ve 1 048 576 satıra kadar destek verir. Çalışma sayfalarını sayfalara “sığdırmak”, GroupDocs.Viewer ile elektronik tablo render etmenin kritik bir parçasıdır. Çalışma sayfasını sayfa(lar)a sığdırmak için GroupDocs.Viewer bir çalışma sayfası bölme işlemi gerçekleştirir — çalışma sayfası birden çok dikdörtgen parçaya bölünür ve her biri ayrı bir sayfaya yerleştirilir. Aşağıda beş farklı yöntem listelenmiş ve açıklanmıştır.
Önemli nokta — bu bölme yöntemlerinin tümü aynı şekilde belirtilir; yani SpreadsheetOptions sınıfının bir örneğini oluşturan belirli bir statik (fabrika) metod kullanılır.
Tüm çalışma sayfasını tek bir sayfada render et
SpreadsheetOptions.ForOnePagePerSheet()
En kolay ve en basit yol — bölmeyi kapatıp sayfa boyutunu tüm çalışma sayfasının içeriğine sığacak şekilde ayarlamaktır. Bu, çalışma sayfasının küçük olduğu biliniyorsa iyi bir seçimdir. Ancak çalışma sayfası gerçekten büyükse, bu yaklaşım korkunç sonuçlar doğurabilir. Özellikle HTML formatına render edildiğinde, ortaya çıkan HTML belgesi onlarca hatta yüzlerce MiB büyüklüğünde olabilir; bu da web tarayıcılarında bu kadar büyük dosyaların görüntülenmesinde sorunlara yol açar. JPEG formatına render edildiğinde ise genişlik ya da yükseklik 65 535 piksel sınırını aşarsa durum daha da kötüleşir. Bu modu bilinçli olarak kullanın.
Çalışma sayfasını sayfa sonlarına göre böl
SpreadsheetOptions.ForRenderingByPageBreaks()
Microsoft Excel, kağıt boyutu ve sayfa ayarları (yönelim, kenar boşlukları vb.) temelinde otomatik sayfa sonları ekler. “View” sekmesine geçip “Page Break Preview” moduna girdiğinizde, tüm çalışma sayfası alanını dikdörtgen parçalara bölen mavi çizgileri görürsünüz; her birine “Page 1”, “Page 2” gibi etiketler verilmiştir. Bu, Microsoft Excel’in bir çalışma sayfasını sayfalara bölmeyi “önerdiği” şekildir.
Bu yöntemle GroupDocs.Viewer, Microsoft Excel’i taklit eder ve çalışma sayfalarını sayfa sonlarına göre bölerek render eder.
Belirtmek gerekir ki, bu seçenek — çalışma sayfasını sayfa sonuna göre bölmek — BaseViewOptions.SpreadsheetOptions özelliğinin varsayılan seçeneğidir; yani bir view options sınıfı örneği oluşturduğunuzda, ForRenderingByPageBreaks() seçeneği varsayılan olarak seçilir.
Yalnızca yazdırma alanını render et
SpreadsheetOptions.ForRenderingPrintArea()
Sayfa sonlarına ek olarak Microsoft Excel’de “Print Area” (Yazdırma Alanı) kavramı bulunur. Yazdırma Alanı, bir çalışma sayfasındaki bir ya da daha fazla hücre aralığını, yalnızca bu alanın yazdırılacağını belirten bir tanımdır; Yazdırma Alanı dışındaki içerik hiç yazdırılmaz. Yazdırma Alanına bir hücre aralığı eklemek için “Page Layout” sekmesine gidin, “Print Area” düğmesine tıklayın ve ardından “Set Print Area” seçeneğini seçin (aşağıdaki ekran görüntüsüne bakın). Başka bir hücre aralığını eklemek için yeni aralığı seçin, “Print Area” düğmesine tıklayın ve “Add to Print Area” seçeneğini seçin. “Page Break Preview” modunda Yazdırma Alanındaki tüm hücre aralıklarını görebilirsiniz.
Yazdırma alanını render et ve sayfa sonlarına göre böl
SpreadsheetOptions.ForRenderingPrintAreaAndPageBreaks()
GroupDocs.Viewer, benzersiz bir özellik sunar — Yazdırma Alanı ve sayfa sonlarını tek bir modda birleştirir. Bu durumda GroupDocs.Viewer, çalışma sayfasındaki tüm yazdırma alanı hücre aralıklarını ve sayfa sonlarını aynı anda dikkate alarak çalışma sayfasını sayfalara böler.
Aşağıdaki ekran görüntüsünde kırmızı çizgi yazdırma alanını, mavi çizgi ise sayfa sonlarını gösterir.
Çalışma sayfasını satır ve sütunlara göre manuel olarak böl
SpreadsheetOptions.ForSplitSheetIntoPages(int countRowsPerPage)
SpreadsheetOptions.ForSplitSheetIntoPages(int countRowsPerPage, int countColumnsPerPage)
Bazen yukarıda açıklanan bölme yöntemlerinden hiçbiri kabul edilemez ya da elektronik tablo, sayfa sonları ve Yazdırma Alanlarını desteklemeyen bir formata (örneğin metin tabanlı CSV) sahiptir. Böyle durumlarda GroupDocs.Viewer, her sayfada bulunması gereken satır ve/veya sütun sayısını manuel olarak belirtmenize izin verir. Kısaca, sadece satırlara göre bölme ile satır‑ve‑sütunlara göre bölme arasındaki fark aşağıdaki ekran görüntüsünde gösterilmiştir.
Ek seçenekleri ayarlama
Yukarıda açıklananlar, GroupDocs.Viewer ile elektronik tablo render etmek için temel ve yeterlidir. Ancak, render sonucunu daha da özelleştirmenizi sağlayan pek çok ek seçenek de mevcuttur; bunlar zorunlu değildir fakat kullanışlıdır.
Bu seçeneklerin bir kısmı, SpreadsheetOptions sınıfının özellikleri olarak temsil edilir ve bu sınıf, view options sınıfının SpreadsheetOptions özelliği üzerinden erişilebilir. Diğerleri ise tüm dört render modunda ortak olan, ViewOptions soyut sınıfında bulunur.
Satır ve sütun başlıklarını render et
MS Excel ya da benzeri bir tablo işleme programı bir elektronik tablo belgesini açtığında, sütun ve satır başlıklarını gösterir; sütunlar harf (A, B, C, AA, AB, …) ve satırlar sayı (1, 2, 3, …, 1048576) ile etiketlenir. Render sırasında, GroupDocs.Viewer varsayılan olarak bu başlıkları göstermez; çünkü bunlar tablo işlemcinin arayüzünün bir parçasıdır, belgenin kendisi değildir. Ancak bu davranış, boolean tipinde bir RenderHeadings özelliği ile değiştirilebilir. Varsayılan olarak bu özellik devre dışıdır (false); true yapıldığında satır ve sütun başlıkları çıktı belgesinde yer alır; aşağıdaki ekran görüntüsünde görülebilir.
Çalışma sayfası ızgaralarını render et
Bu seçeneğin kavramı bir öncekiyle çok benzerdir. Varsayılan olarak GroupDocs.Viewer, hücreler arasındaki ızgaraları göstermez; çünkü ızgaralar elektronik tablonun bir parçası değil, tablo işlemcinin bir temsil biçimidir. Ancak boolean tipinde bir RenderGridLines özelliği kullanılarak MS Excel davranışı taklit edilebilir. SpreadsheetOptions.RenderGridLines özelliğine true değeri atandığında, ızgaralar çıktı belgesinde yer alır; aşağıdaki ekran görüntüsünde gösterildiği gibi.
Hücre metni taşmasını kontrol et
Bazı durumlarda bir hücredeki metin, hücrenin sınırlarına sığmaz. Bu metni nasıl düzgün gösterebiliriz? GroupDocs.Viewer, bu sorunu çözmek için özel bir SpreadsheetOptions.TextOverflowMode özelliği sunar. TextOverflowMode özelliği, aynı adı taşıyan bir enum tipine sahiptir ve dört olası değeri vardır; aşağıda açıklanmıştır.
OverlayIfNextIsEmpty
Varsayılan olarak, SpreadsheetOptions.TextOverflowMode özelliği OverlayIfNextIsEmpty değerine sahiptir; bu, Microsoft Excel’in varsayılan davranışını taklit eder. Kısaca, bu değer metnin bitişik hücrelere taşmasına izin verir, ancak yalnızca bu bitişik hücreler boşsa. Bitişik hücreler boş değilse, taşan metin kesilir.
Yukarıdaki ekran görüntüsü, OverlayIfNextIsEmpty değeriyle bir XLSX dosyasından render edilen HTML dosyasını gösterir. “B2” hücresinde uzun bir metin vardır ve “C2” hücresi boş olmadığından metin kesilir. “C3” hücresi de uzun bir metne sahiptir; bu metin “D2” ve “E2” hücrelerine taşar çünkü bu hücreler boştur.
Overlay
TextOverflowMode.Overlay değeri, bir önceki değere benzer ancak daha agresiftir: orijinal hücrenin sınırlarına sığmayan uzun metin, bitişik hücrelerin dolu olup olmamasına bakılmaksızın her zaman taşar. Bitişik hücrelerde veri varsa, bu veri silinir.
Yukarıdaki ekran görüntüsü bu davranışı gösterir. “B2” hücresindeki uzun metin, “C2”, “D2”, “E2”, “F2” hücrelerine taşar; sonuç olarak “C2” ve “F2” hücrelerindeki orijinal metin silinir.
HideText
TextOverflowMode.HideText modu, önceki Overlay modunun tam tersidir — taşma yerine, hücrenin kendi sınırlarına sığmayan metin kesin olarak kesilir; bitişik hücrelerde boş alan olup olmaması dikkate alınmaz.
Yukarıdaki ekran görüntüsünde “C3” hücresi örneklenmiştir; bitişik “D3” hücresi boş olsa bile metin koşulsuz olarak kesilir.
AutoFitColumn
TextOverflowMode.AutoFitColumn değeri, sorunu farklı bir yaklaşımla çözer — metni sığdırmak için sütun genişliğini artırır. Yani, belirli bir hücredeki metin ne kadar uzun olursa olsun, o hücrenin bulunduğu sütun(lar)ın genişliği, metnin tamamını gösterecek şekilde artırılır.
Yukarıdaki ekran görüntüsü bu işleyişi gösterir. Elbette bu yaklaşım, özellikle hücredeki metin çok uzun olduğunda, sayfanın aşırı genişlemesine ve yatay kaydırma çubuğunun rahatsız edici bir şekilde ortaya çıkmasına neden olabilir.
Gizli satır ve sütunları render et
Microsoft Excel ve diğer tablo işlemciler, belirli satır ve sütunları gizleme imkanı sunar. Varsayılan olarak GroupDocs.Viewer bu gizli satır ve sütunları render etmez; ancak bu davranış değiştirilebilir. ViewOptions.SpreadsheetOptions.RenderHiddenRows ve ViewOptions.SpreadsheetOptions.RenderHiddenColumns özelliklerine true değeri verildiğinde, HTML, PDF, PNG veya JPEG formatında render edilirken gizli satır ve sütunlar çıktı dosyasında gösterilir.
Gizli çalışma sayfalarını render et
Yukarıda açıklanan gizli satır ve sütunlar gibi, elektronik tablo dosyası bir ya da daha fazla gizli çalışma sayfası içerebilir. Önceki durumda olduğu gibi, varsayılan olarak GroupDocs.Viewer gizli çalışma sayfalarını render etmez. Ancak bu, RenderHiddenPages özelliği true olarak ayarlandığında değiştirilebilir. Dikkat edilmesi gereken nokta, RenderHiddenPages özelliğinin SpreadsheetOptions içinde değil, tüm view options sınıfları için ortak olan BaseViewOptions soyut sınıfında bulunmasıdır.
Boş satır ve sütunları atla
Bazı elektronik tablolar “seyrek”tir; yani çok sayıda boş hücre içerir ve bu boşluklar gereksiz yere alan kaplar. GroupDocs.Viewer, render sırasında boş satır ve sütunları atlama özelliğine sahiptir. Bu özellik etkinleştirildiğinde, boş satır ve/veya sütunlar sonuç HTML, PDF, PNG ve JPEG dosyalarından çıkarılır. Bu özelliği kontrol eden boolean özellikler şunlardır:
Yukarıdaki ekran görüntüsü, hem SkipEmptyRows hem de SkipEmptyColumns özelliklerinin etkin olduğunu gösterir.
Hücre yorumlarını render et veya gizle
Bir elektronik tablo belgesindeki hücreler yorum içerebilir; varsayılan olarak GroupDocs.Viewer bu yorumları render eder. Ancak bu davranış, BaseViewOptions.RemoveComments özelliği true olarak ayarlandığında devre dışı bırakılabilir; bu durumda hiçbir yorum render edilmez. Bu özelliğin SpreadsheetOptions içinde değil, BaseViewOptions sınıfında bulunduğunu unutmayın.
Yukarıdaki ekran görüntüsü, varsayılan seçeneklerle bir XLSX dosyasının hücre yorumlarıyla PNG formatına render edilmesini gösterir — “E2” hücresinin yorumu sonuç PNG dosyasında yer alır.
Çıktı PDF sayfalarında çalışma sayfası kenar boşluklarını ayarla
Çalışma sayfalarını PDF formatına render ederken, sayfa kenar boşluklarını (sayfa kenarından içeriğe olan santimetre cinsinden mesafe) kontrol edebilirsiniz. Üst, sağ, alt ve sol kenar boşluklarını kontrol eden dört özellik vardır:
SpreadsheetOptions.TopMarginSpreadsheetOptions.RightMarginSpreadsheetOptions.BottomMarginSpreadsheetOptions.LeftMargin
Varsayılan olarak bu dört özelliğin değeri negatiftir; bu, GroupDocs.Viewer’ın varsayılan kenar boşluklarını uyguladığı anlamına gelir. Ancak bu değerleri açıkça ayarlamak da mümkündür. Sayfa kenar boşluklarının yalnızca hedef format PDF olduğunda uygulanacağını vurgulamak gerekir.
Aşağıdaki kod örneği, bir PdfViewOptions oluşturur, dört kenar boşluğunu ayarlar ve belgeyi render eder:
using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;
// ...
PdfViewOptions pdfViewOptions = new PdfViewOptions("Output.pdf");
pdfViewOptions.SpreadsheetOptions = SpreadsheetOptions.ForOnePagePerSheet();
pdfViewOptions.SpreadsheetOptions.TopMargin = 2;
pdfViewOptions.SpreadsheetOptions.BottomMargin = 4;
pdfViewOptions.SpreadsheetOptions.LeftMargin = 8;
pdfViewOptions.SpreadsheetOptions.RightMargin = 0;
using (var viewer = new Viewer("spreadsheet.xlsx"))
{
viewer.View(pdfViewOptions);
}
Sonucun gösterildiği görüntü aşağıdadır:
Sonuç
Elektronik tablo formatları oldukça karmaşıktır ve belgeler değişken tip ve uzunlukta çok farklı içeriklere sahip olabilir. Çoğu durumda, karmaşık bir elektronik tablo belgesini varsayılan seçeneklerle bir formata render etmek mümkün değildir; bu yüzden GroupDocs.Viewer, kapsamlı bir özellik seti sunar. Bu özellikler sayesinde her kullanıcı, render sonucunu kendi ihtiyaçlarına göre ayarlayabilir.
İlgili Bağlantılar
- Excel ve Apple Numbers elektronik tablolarını HTML, PDF ve görüntü dosyaları olarak render et
- Bir çalışma sayfasını sayfalara böl
- Elektronik tablo render seçeneklerini belirt
Ücretsiz deneme alın
GroupDocs.Viewer for .NET’in ücretsiz deneme sürümünü releases.groupdocs.com adresinden indirebilirsiniz. Ayrıca, tüm özellik ve işlevleri kısıtlama olmadan denemeniz için geçici bir lisansı buradan temin edebilirsiniz.