Java kullanarak word belgelerinde tablolar oluşturma

Microsoft Word, çeşitli türde belgeler oluşturmak için kullanılan popüler bir kelime işlemci uygulamasıdır. Bu belgeler metin, resimler, tablolar ve grafikler dahil olmak üzere çeşitli türde öğeler içerebilir. Java’da belge oluşturmayı ve değiştirmeyi otomatikleştirmek söz konusu olduğunda, Word belgeleri içinde tablolar oluşturmak için zahmetsiz bir çözüme ihtiyacınız olabilir. Bu blog yazısında, bir Java uygulamasında Word belgelerinde tabloların nasıl oluşturulacağını inceleyeceğiz.

Word Belgelerinde Tablo Oluşturmak için Java Kitaplığı

Aspose.Words for Java, Java geliştiricilerinin Microsoft Word belgeleriyle programlı olarak çalışmasına olanak tanıyan bir API’dir. Word belgelerini oluşturmak, değiştirmek ve işlemek için çok çeşitli özellikler sunarak belge oluşturma ve işleme görevlerini otomatikleştirmek için değerli bir araç haline gelir. Bu kütüphaneyi bir Word belgesine tablo eklemek için kullanacağız.

Kitaplığı indirebilir veya aşağıdaki Maven yapılandırmalarını kullanarak yükleyebilirsiniz.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>23.10</version>
    <classifier>jdk17</classifier>
</dependency>

Java’da Word Belgesinde Tablo Oluşturma

Aspose.Words for Java’yı kullanarak Word belgelerinde tablo oluşturmanın iki yolu vardır:

  • DocumentBuilder’ı kullanma
  • DOM (Belge Nesne Modeli) Kullanımı

İhtiyaçlarınıza en uygun yöntemi seçebilirsiniz. Öyleyse bu yöntemlerin her birini ayrıntılı olarak inceleyelim.

DocumentBuilder’ı kullanarak Tablo Oluşturma

DocumentBuilder sınıfı, sıfırdan dinamik belgeler oluşturmanın veya mevcut belgeleri işlemenin hızlı ve kolay bir yolunu sağlar. Metin, onay kutuları, OLE nesneleri, paragraflar, listeler, tablolar, resimler ve daha fazlası gibi çeşitli içerik öğelerini eklemek için bir dizi işlev sunar.

Java’da bir Word belgesinde tablo oluşturmak için DocumentBuilder sınıfını kullanan adımlar aşağıda verilmiştir.

  • Word belgesini yüklemek veya oluşturmak için Document sınıfının bir nesnesini oluşturun.
  • DocumentBuilder sınıfının bir nesnesini oluşturun.
  • DocumentBuilder.startTable() yöntemini kullanarak bir tablo başlatın.
  • DocumentBuilder.insertCell() yöntemini kullanarak bir hücre ekleyin.
  • (İsteğe bağlı) Hücreye yazı tipi ve hizalama gibi biçimlendirmeler uygulayın.
  • DocumentBuilder.write() yöntemini kullanarak hücreye metin ekleyin.
  • Gerektiğinde hücrelere ve metin eklemeyi tekrarlayın.
  • DocumentBuilder.endRow() yöntemini kullanarak hücre eklemeyi tamamladığınızda satırı sonlandırın.
  • DocumentBuilder.endTable() yöntemini kullanarak tüm satırları eklediğinizde tabloyu sonlandırın.
  • Document.save() yöntemini kullanarak Word belgesini kaydedin.

Aşağıdaki kod parçacığı, Java kullanarak bir Word belgesinde nasıl tablo oluşturulacağını gösterir.

// Belge oluşturun veya yükleyin.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Yeni bir tablo oluşturun ve hücre ekleyin.
Table table = builder.startTable();
builder.insertCell();

// Tablo geniş formatlama, tabloda en az bir satır mevcut olduktan sonra uygulanmalıdır.
table.setLeftIndent(20.0);

// Yüksekliği ayarlayın ve başlık satırı için yükseklik kuralını tanımlayın.
builder.getRowFormat().setHeight(40.0);
builder.getRowFormat().setHeightRule(HeightRule.AT_LEAST);

builder.getCellFormat().getShading().setBackgroundPatternColor(new Color((198), (217), (241)));
builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
builder.getFont().setSize(16.0);
builder.getFont().setName("Arial");
builder.getFont().setBold(true);

builder.getCellFormat().setWidth(100.0);
builder.write("Header Row,\n Cell 1");

// Bu hücrenin genişliğini bir önceki hücreden miras aldığı için belirtmemize gerek yok.
builder.insertCell();
builder.write("Header Row,\n Cell 2");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Header Row,\n Cell 3");
builder.endRow();

builder.getCellFormat().getShading().setBackgroundPatternColor(Color.WHITE);
builder.getCellFormat().setWidth(100.0);
builder.getCellFormat().setVerticalAlignment(CellVerticalAlignment.CENTER);

// Yüksekliği sıfırlayın ve tablo gövdesi için farklı bir yükseklik kuralı tanımlayın.
builder.getRowFormat().setHeight(30.0);
builder.getRowFormat().setHeightRule(HeightRule.AUTO);
builder.insertCell();
        
// Yazı tipi biçimlendirmesini sıfırlayın.
builder.getFont().setSize(12.0);
builder.getFont().setBold(false);

builder.write("Row 1, Cell 1 Content");
builder.insertCell();
builder.write("Row 1, Cell 2 Content");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Row 1, Cell 3 Content");
builder.endRow();

builder.insertCell();
builder.getCellFormat().setWidth(100.0);
builder.write("Row 2, Cell 1 Content");

builder.insertCell();
builder.write("Row 2, Cell 2 Content");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Row 2, Cell 3 Content.");
builder.endRow();

// Son masa.
builder.endTable();

// Belgeyi kaydedin.
doc.save("table.docx");

Yukarıdaki kod örneğini kullanarak oluşturduğumuz tablonun ekran görüntüsü aşağıdadır.

Word Belgesindeki Tablo

DOM kullanarak Tablo Oluştur

Belge Nesne Modeli (DOM), bir Word belgesinin içeriğini ve biçimlendirmesini programlı olarak okumanıza, değiştirmenize ve değiştirmenize olanak tanıyan bir Word belgesinin bellek içi temsilidir. Aşağıdaki adımlarda DOM kullanılarak bir Word belgesinde nasıl tablo oluşturulacağı gösterilmektedir.

  • Word belgesini yüklemek veya oluşturmak için Document sınıfının bir nesnesini oluşturun.
  • Table sınıfından bir nesne oluşturun ve Document.getFirstSection().getBody().appendChild(Table) yöntemini kullanarak belgeye tablo ekleyin.
  • Row sınıfının bir nesnesini oluşturun ve Table.appendChild(Row) yöntemini kullanarak bunu tabloya ekleyin.
  • Cell sınıfının bir nesnesini oluşturun, biçimlendirme seçeneklerini ayarlayın ve hücreye metin ekleyin.
  • Row.appendChild(Cell) yöntemini kullanarak hücreyi satıra ekleyin.
  • İşlemi istediğiniz sayıda satır için tekrarlayın.
  • Document.save() yöntemini kullanarak Word belgesini kaydedin.

Aşağıdaki kod parçacığı, Java’daki bir Word belgesinde nasıl tablo oluşturulacağını gösterir.

// Belge oluşturun veya yükleyin.
Document doc = new Document();
        
// Tablo nesnesini oluşturarak başlıyoruz. Belge nesnesini aktarmamız gerektiğini unutmayın
// her düğümün yapıcısına. Bunun nedeni, yarattığımız her düğümün ait olması gerektiğidir.
// bazı belgelere.
Table table = new Table(doc);
doc.getFirstSection().getBody().appendChild(table);

// Burada bizim için satırları ve hücreleri oluşturmak için ProvidingMinimum'u çağırabiliriz. Bu yöntem kullanılıyor
// Belirtilen düğümün geçerli olduğundan emin olmak için. Bu durumda geçerli bir tablonun en az bir Satır ve bir hücreye sahip olması gerekir.

// Bunun yerine sırayı ve tabloyu kendimiz oluşturmayı ele alacağız.
// Bir algoritmanın içinde bir tablo oluşturuyor olsaydık, bunu yapmanın en iyi yolu bu olurdu.
Row row = new Row(doc);
row.getRowFormat().setAllowBreakAcrossPages(true);
table.appendChild(row);

// Artık herhangi bir otomatik sığdırma ayarını uygulayabiliriz.
table.autoFit(AutoFitBehavior.FIXED_COLUMN_WIDTHS);

Cell cell = new Cell(doc);
cell.getCellFormat().getShading().setBackgroundPatternColor(Color.BLUE);
cell.getCellFormat().setWidth(80.0);
cell.appendChild(new Paragraph(doc));
cell.getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 1 Text"));

row.appendChild(cell);

// Daha sonra işlemi tablodaki diğer hücreler ve satırlar için tekrarlayacağız.
// Mevcut hücreleri ve satırları klonlayarak da işleri hızlandırabiliriz.
row.appendChild(cell.deepClone(false));
row.getLastCell().appendChild(new Paragraph(doc));
row.getLastCell().getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 2 Text"));

// Belgeyi kaydedin.
doc.save("table.docx");

Word Belgelerine İç İçe Tablo Ekleme

Ana tablonun bir hücresinin içinde yer alan iç içe geçmiş bir tablo oluşturmanız gerektiğinde de durum söz konusu olabilir. Bunu karmaşık bir süreçten geçmeden yapabilirsiniz. Öncelikle bir üst tablo oluşturun ve ardından denetimi üst tablonun istenen hücresinin içine taşımak için DocumentBuilder.moveTo(Cell.getFirstParagraph()) yöntemini çağırın. İşlem tamamlandıktan sonra aynı şekilde yeni bir tablo oluşturun.

Aşağıdaki kod parçacığı, Java kullanarak bir Word belgesinde iç içe geçmiş bir tablonun nasıl oluşturulacağını gösterir.

// Belge oluşturun veya yükleyin.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Hücre ekle.
Cell cell = builder.insertCell();
builder.writeln("Outer Table Cell 1");

builder.insertCell();
builder.writeln("Outer Table Cell 2");

// Bu çağrı, ilk tablonun içinde iç içe bir tablo oluşturmak için önemlidir. 
// Bu çağrı olmadan aşağıya eklenen hücreler dış tabloya eklenecektir.
builder.endTable();

// Dış tablonun ilk hücresine gidin.
builder.moveTo(cell.getFirstParagraph());

// İç masayı oluşturun.
builder.insertCell();
builder.writeln("Inner Table Cell 1");
builder.insertCell();
builder.writeln("Inner Table Cell 2");
builder.endTable();

// Belgeyi kaydedin.
doc.save("table.docx");

Yukarıda oluşturduğumuz iç içe tablonun ekran görüntüsü aşağıdadır.

Nested Table in a Word Document

Java’da HTML’den Kelime Tablosu Oluşturma

Ayrıca HTML dizesini kullanarak bir Word belgesinde tablo oluşturabilirsiniz ve izlenecek adımlar aşağıda verilmiştir.

  • Word belgesini yüklemek veya oluşturmak için Document sınıfının bir nesnesini oluşturun.
  • DocumentBuilder sınıfının bir nesnesini oluşturun.
  • DocumentBuilder.insertHtml(String) yöntemini kullanarak tablonun HTML dizesini belgeye ekleyin.
  • Son olarak Document.save() yöntemini kullanarak belgeyi kaydedin.

Aşağıda bir HTML dizesinden bir Word tablosu oluşturmak için kullanılan kod pasajı bulunmaktadır.

// Belge oluşturun veya yükleyin.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// AutoFitSettings'in HTML'den eklenen tablolara uygulanmadığını unutmayın.
builder.insertHtml("<table>" +
                   "<tr>" +
                   "<td>Row 1, Cell 1</td>" +
                   "<td>Row 1, Cell 2</td>" +
                   "</tr>" +
                   "<tr>" +
                   "<td>Row 2, Cell 2</td>" +
                   "<td>Row 2, Cell 2</td>" +
                   "</tr>" +
                   "</table>");

// Belgeyi kaydedin.
doc.save("table.docx");

Ücretsiz Lisans Alın

Aspose.Words for Java’yı değerlendirme sınırlaması olmaksızın kullanmak için geçici lisans alabilirsiniz.

Çözüm

Bu blog yazısında Java kullanarak Word belgelerinde tabloların nasıl oluşturulacağını araştırdık. Belge oluşturucuyu veya DOM’yi kullanarak nasıl tablo oluşturulacağını, iç içe tablonun nasıl oluşturulacağını ve HTML dizesinden nasıl tablo oluşturulacağını gördünüz. Kitaplığı yükleyerek ve yönergeleri izleyerek tablo oluşturma özelliğini Java uygulamanıza kolayca entegre edebilirsiniz.

Aspose.Words for Java, zengin ve karmaşık belgeleri kolaylıkla oluşturmanıza olanak tanıyan çok sayıda başka özellik ve biçimlendirme seçeneği sunar. Aspose.Words for Java hakkında daha fazla bilgi edinmek için onun kapsamlı belgelerini ve örneklerini inceleyin. Herhangi bir sorunuz olması durumunda, forum aracılığıyla bize bildirmekten çekinmeyin.

Ayrıca bakınız