Biçimlendirmeyi Uygula

Bir tablonun her öğesi farklı biçimlendirmeyle uygulanabilir. Örneğin, tablo biçimlendirmesi tablonun tamamına, satır biçimlendirmesi yalnızca belirli satırlara, hücre biçimlendirmesi yalnızca belirli hücrelere uygulanacaktır.

Aspose.Words, bir tabloya biçimlendirme almak ve uygulamak için zengin bir API sağlar. Biçimlendirmeyi ayarlamak için Table, RowFormat ve CellFormat düğümlerini kullanabilirsiniz.

Bu yazımızda farklı tablo düğümlerine formatlamanın nasıl uygulanacağından ve Aspose.Words’in hangi tablo formatlama ayarlarını desteklediğinden bahsedeceğiz.

Farklı Düğümlere Biçimlendirme Uygula

Bu bölümde formatın çeşitli tablo düğümlerine uygulanmasına bakacağız.

Tablo Düzeyinde Biçimlendirme

Bir tabloya biçimlendirme uygulamak için Table, PreferredWidth ve TableCollection sınıflarını kullanarak karşılık gelen Table düğümünde bulunan özellikleri kullanabilirsiniz.

Aşağıdaki resimler Microsoft Word’deki Table biçimlendirme özelliklerinin ve Aspose.Words’deki bunlara karşılık gelen özelliklerin bir temsilini göstermektedir.

formattin-features-table-level-aspose-words-python

formatting-table-options-aspose-words-python

Aşağıdaki kod örneği, bir tabloya anahat kenarlığının nasıl uygulanacağını gösterir:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
# Align the table to the center of the page.
table.alignment = aw.tables.TableAlignment.CENTER
# Clear any existing borders from the table.
table.clear_borders()
# Set a green border around the table but not inside.
table.set_border(aw.BorderType.LEFT, aw.LineStyle.SINGLE, 1.5, drawing.Color.green, True)
table.set_border(aw.BorderType.RIGHT, aw.LineStyle.SINGLE, 1.5, drawing.Color.green, True)
table.set_border(aw.BorderType.TOP, aw.LineStyle.SINGLE, 1.5, drawing.Color.green, True)
table.set_border(aw.BorderType.BOTTOM, aw.LineStyle.SINGLE, 1.5, drawing.Color.green, True)
# Fill the cells with a light green solid color.
table.set_shading(aw.TextureIndex.TEXTURE_SOLID, drawing.Color.light_green, drawing.Color.empty())
doc.save(ARTIFACTS_DIR + "WorkingWithTableStylesAndFormatting.apply_outline_border.docx")

Aşağıdaki kod örneği, tüm kenarlıkları etkinleştirilmiş (ızgara) bir tablonun nasıl oluşturulacağını gösterir:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
# Clear any existing borders from the table.
table.clear_borders()
# Set a green border around and inside the table.
table.set_borders(aw.LineStyle.SINGLE, 1.5, drawing.Color.green)
doc.save(ARTIFACTS_DIR + "WorkingWithTableStylesAndFormatting.build_table_with_borders.docx")

Satır Düzeyinde Biçimlendirme

Satır düzeyinde biçimlendirmesi Row, RowFormat ve RowCollection sınıfları kullanılarak kontrol edilebilir.

Aşağıdaki resimler Microsoft Word’deki Row biçimlendirme özelliklerinin ve Aspose.Words’deki bunlara karşılık gelen özelliklerin bir temsilini göstermektedir.

formatting-row-level-aspose-words-python

Aşağıdaki kod örneği, tablo satırı biçimlendirmesinin nasıl değiştirileceğini gösterir:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
# Retrieve the first row in the table.
first_row = table.first_row
first_row.row_format.borders.line_style = aw.LineStyle.NONE
first_row.row_format.height_rule = aw.HeightRule.AUTO
first_row.row_format.allow_break_across_pages = True

Hücre Düzeyinde Biçimlendirme

Hücre düzeyinde biçimlendirme Cell, CellFormat ve CellCollection sınıfları tarafından kontrol edilir.

Aşağıdaki resimler Microsoft Word’deki Cell biçimlendirme özelliklerinin ve Aspose.Words’deki bunlara karşılık gelen özelliklerin bir temsilini göstermektedir.

formatting-cell-level-aspose-words-python

auto-formatting-cell-level-aspose-words-python

Aşağıdaki kod örneği, bir tablo hücresinin biçimlendirmesinin nasıl değiştirileceğini gösterir:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
first_cell = table.first_row.first_cell
first_cell.cell_format.width = 30
first_cell.cell_format.orientation = aw.TextOrientation.DOWNWARD
first_cell.cell_format.shading.foreground_pattern_color = drawing.Color.light_green

Aşağıdaki kod örneği, hücre içeriğinin sol/üst/sağ/alt kısmına eklenecek alan miktarının (nokta cinsinden) nasıl ayarlanacağını gösterir:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.start_table()
builder.insert_cell()
# Sets the amount of space (in points) to add to the left/top/right/bottom of the cell's contents.
builder.cell_format.set_paddings(30, 50, 30, 50)
builder.writeln("I'm a wonderful formatted cell.")
builder.end_row()
builder.end_table()
doc.save(ARTIFACTS_DIR + "WorkingWithTableStylesAndFormatting.cell_padding.docx")
view raw cell-padding.py hosted with ❤ by GitHub

Satır Yüksekliklerini Belirtin

Satır yüksekliğini ayarlamanın en basit yolu DocumentBuilder‘i kullanmaktır. Uygun RowFormat özelliklerini kullanarak varsayılan yükseklik ayarını yapabilir veya tablodaki her satır için farklı bir yükseklik uygulayabilirsiniz.

Aspose.Words’te tablo satır yüksekliği şu şekilde kontrol edilir:

  • satır yüksekliği özelliği – Height
  • verilen satır için yükseklik kuralı özelliği – HeightRule

Aynı zamanda her sıra için farklı bir yükseklik ayarlanabilir; bu, masa ayarlarını geniş ölçüde kontrol etmenize olanak tanır.

Aşağıdaki kod örneği, tek hücre içeren bir tablonun nasıl oluşturulacağını ve satır biçimlendirmesinin nasıl uygulanacağını gösterir:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
table = builder.start_table()
builder.insert_cell()
row_format = builder.row_format
row_format.height = 100
row_format.height_rule = aw.HeightRule.EXACTLY
# These formatting properties are set on the table and are applied to all rows in the table.
table.left_padding = 30
table.right_padding = 30
table.top_padding = 30
table.bottom_padding = 30
builder.writeln("I'm a wonderful formatted row.")
builder.end_row()
builder.end_table()
doc.save(ARTIFACTS_DIR + "WorkingWithTableStylesAndFormatting.apply_row_formatting.docx")

Tablo ve Hücre Genişliklerini Belirleme

Microsoft Word belgesindeki bir tablo, tabloyu ve tek tek hücreleri yeniden boyutlandırmak için birkaç farklı yol sunar. Bu özellikler, tablonun görünümü ve davranışı üzerinde önemli ölçüde kontrol sağlar; böylece Aspose.Words, Microsoft Word’te olduğu gibi tabloların davranışını destekler.

Tablo öğelerinin, tek tek hücrelerin yanı sıra genel tablonun genişliklerinin nasıl hesaplanacağını etkileyebilecek birkaç farklı özellik sunduğunu bilmek önemlidir:

  • Masada tercih edilen genişlik
  • Bireysel hücrelerde tercih edilen genişlik
  • Masaya otomatik sığdırmaya izin verilmesi

Bu makalede, çeşitli tablo genişliği hesaplama özelliklerinin nasıl çalıştığı ve tablo genişliği hesaplaması üzerinde tam kontrolün nasıl elde edileceği ayrıntılarıyla anlatılmaktadır. Bu tablo düzeninin beklendiği gibi görünmediği durumlarda bunu bilmek özellikle yararlıdır.

Tercih Edilen Genişlik Nasıl Kullanılır

Bir tablonun veya tek tek hücrelerin istenen genişliği, bir öğenin sığdırmaya çalıştığı boyut olan tercih edilen genişlik özelliği aracılığıyla tanımlanır. Yani tercih edilen genişlik tablonun tamamı veya tek tek hücreler için belirtilebilir. Bazı durumlarda bu genişliği tam olarak sığdırmak mümkün olmayabilir ancak çoğu durumda gerçek genişlik bu değere yakın olacaktır.

Uygun tercih edilen genişlik türü ve değeri, PreferredWidth sınıfının yöntemleri kullanılarak ayarlanır:

  • otomatik veya “tercih edilen genişlik yok” seçeneğini belirtmek için Auto yöntemi
  • yüzde genişliğini belirtmek için FromPercent yöntemi
  • nokta cinsinden genişliği belirtmek için FromPoints yöntemi

Aşağıdaki resimler Microsoft Word’teki tercih edilen genişlik ayarı özelliklerinin ve Aspose.Words’deki karşılık gelen özelliklerinin bir temsilini göstermektedir.

formatting-table-properties-aspose-words-python

Bu seçeneklerin bir belgedeki gerçek tabloya nasıl uygulandığına dair bir örnek aşağıdaki resimde görülebilir.

tables-applying-options-python

Tercih Edilen Tabloyu veya Hücre Genişliğini Belirtin

Aspose.Words’te tablo ve hücre genişlikleri, PreferredWidthType numaralandırmasında mevcut seçeneklerle birlikte Table.PreferredWidth özelliği ve CellFormat.PreferredWidth özelliği kullanılarak ayarlanır:

  • Tercih edilen genişlik ayarının olmaması durumuna eşdeğer olan Auto
  • Öğeyi penceredeki veya kapsayıcı boyutundaki kullanılabilir alana göre sığdıran ve mevcut genişlik değiştiğinde değeri yeniden hesaplayan Percent
  • Nokta cinsinden belirtilen genişliğe sahip bir öğeye karşılık gelen Points

Table.PreferredWidth özelliğinin kullanılması, kapsayıcısına göre tercih edilen genişliği ayarlayacaktır: sayfa, metin sütunu veya iç içe geçmiş bir tablo ise dış tablo hücresi.

Aşağıdaki kod örneği, tablonun sayfa genişliğinin %50’sine otomatik sığacak şekilde nasıl ayarlanacağını gösterir:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
# Autofit the first table to the page width.
table.auto_fit(aw.tables.AutoFitBehavior.AUTO_FIT_TO_WINDOW)
doc.save(ARTIFACTS_DIR + "WorkingWithTables.auto_fit_table_to_window.docx")

Belirli bir hücrede CellFormat.PreferredWidth özelliğinin kullanılması tercih edilen genişliği ayarlayacaktır.

Aşağıdaki kod örneği, tercih edilen farklı genişlik ayarlarının nasıl ayarlanacağını gösterir:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
# Insert a table row made up of three cells which have different preferred widths.
builder.start_table()
# Insert an absolute sized cell.
builder.insert_cell()
builder.cell_format.preferred_width = aw.tables.PreferredWidth.from_points(40)
builder.cell_format.shading.background_pattern_color = drawing.Color.light_yellow
builder.writeln("Cell at 40 points width")
# Insert a relative (percent) sized cell.
builder.insert_cell()
builder.cell_format.preferred_width = aw.tables.PreferredWidth.from_percent(20)
builder.cell_format.shading.background_pattern_color = drawing.Color.light_blue
builder.writeln("Cell at 20% width")
# Insert a auto sized cell.
builder.insert_cell()
builder.cell_format.preferred_width = aw.tables.PreferredWidth.AUTO
builder.cell_format.shading.background_pattern_color = drawing.Color.light_green
builder.writeln(
"Cell automatically sized. The size of this cell is calculated from the table preferred width.")
builder.writeln("In this case the cell will fill up the rest of the available space.")
doc.save(ARTIFACTS_DIR + "WorkingWithTables.preferred_width_settings.docx")

Tercih Edilen Genişlik Türünü ve Değerini Bulma

İstediğiniz tablo veya hücrenin tercih edilen genişlik ayrıntılarını bulmak için Type ve Value özelliklerini kullanabilirsiniz.

Aşağıdaki kod örneği, bir tablo hücresinin tercih edilen genişlik türünün nasıl alınacağını gösterir:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
table.allow_auto_fit = True
first_cell = table.first_row.first_cell
type_ = first_cell.cell_format.preferred_width.type
value = first_cell.cell_format.preferred_width.value

Otomatik Uyum Nasıl Ayarlanır

AllowAutoFit özelliği, tablodaki hücrelerin seçilen kritere göre büyüyüp küçülmesine olanak tanır. Örneğin tabloyu sayfa genişliğine sığdırmak için Pencereye Otomatik Sığdır seçeneğini, her hücrenin içeriğine göre büyüyüp küçülmesini sağlamak için İçeriğe Otomatik Sığdır seçeneğini kullanabilirsiniz.

Aspose.Words, varsayılan olarak Pencereye Otomatik Sığdır‘yi kullanarak yeni bir tablo ekler. Tablo mevcut sayfa genişliğine göre boyutlandırılacaktır. Bir tabloyu yeniden boyutlandırmak için AutoFit yöntemini çağırabilirsiniz. Bu yöntem, tabloya hangi otomatik sığdırma türünün uygulandığını belirten bir AutoFitBehavior numaralandırmasını kabul eder.

Otomatik sığdırma yönteminin aslında tabloya farklı özellikleri aynı anda uygulayan bir kısayol olduğunu bilmek önemlidir. Bunlar aslında tabloya gözlemlenen davranışı veren özelliklerdir. Her otomatik uyum seçeneği için bu özellikleri tartışacağız.

Aşağıdaki kod örneği, her hücreyi içeriğine göre küçültmek veya büyütmek için bir tablonun nasıl ayarlanacağını gösterir:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
table.allow_auto_fit = True

Tabloyu Pencereye Otomatik Sığdır

Bir pencereye otomatik sığdırma bir tabloya uygulandığında, aslında perde arkasında aşağıdaki işlemler gerçekleştirilir:

  1. Table.AllowAutoFit özelliği, %100’lük bir Table.PreferredWidth değeri kullanarak sütunları mevcut içeriğe uyacak şekilde otomatik olarak yeniden boyutlandıracak şekilde etkinleştirildi
  2. CellFormat.PreferredWidth tüm tablo hücrelerinden kaldırıldı
  3. Mevcut tablo içeriği için sütun genişlikleri yeniden hesaplanır; sonuçta mevcut genişliğin tamamını kaplayan bir tablo elde edilir
  4. Kullanıcı metni düzenledikçe tablodaki sütunların genişliği otomatik olarak değişir

Aşağıdaki kod örneği, bir tablonun sayfa genişliğine nasıl otomatik olarak sığdırılacağını gösterir:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
# Autofit the first table to the page width.
table.auto_fit(aw.tables.AutoFitBehavior.AUTO_FIT_TO_WINDOW)
doc.save(ARTIFACTS_DIR + "WorkingWithTables.auto_fit_table_to_window.docx")

Tabloyu İçeriğe Otomatik Sığdır

Tablo içeriğe otomatik olarak sığdırıldığında, aslında perde arkasında aşağıdaki adımlar gerçekleştirilir:

  1. Table.AllowAutoFit özelliği, her hücreyi içeriğine göre otomatik olarak yeniden boyutlandırmak için etkinleştirildi

  2. Tercih edilen tablo genişliği Table.PreferredWidth‘ten kaldırılır, her tablo hücresi için CellFormat.PreferredWidth kaldırılır

  3. Sütun genişlikleri mevcut tablo içeriği için yeniden hesaplanır; sonuçta, kullanıcı metni düzenledikçe sütun genişliklerinin ve tüm tablonun genişliğinin içeriğe en iyi uyacak şekilde otomatik olarak yeniden boyutlandırıldığı bir tablo elde edilir

Aşağıdaki kod örneği, bir tablonun içeriğine nasıl otomatik olarak sığdırılacağını gösterir:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
table.auto_fit(aw.tables.AutoFitBehavior.AUTO_FIT_TO_CONTENTS)
doc.save(ARTIFACTS_DIR + "WorkingWithTables.auto_fit_table_to_contents.docx")

Tabloda Otomatik Sığdırmayı Devre Dışı Bırakın ve Sabit Sütun Genişliklerini Kullanın

Bir tabloda otomatik sığdırma devre dışıysa ve bunun yerine sabit sütun genişlikleri kullanılıyorsa aşağıdaki adımlar gerçekleştirilir:

  1. Table.AllowAutoFit özelliği devre dışı bırakıldı, böylece sütunlar içeriklerine göre büyüyüp küçülmüyor
  2. Tüm tablonun tercih edilen genişliği Table.PreferredWidth‘ten kaldırılır, CellFormat.PreferredWidth tüm tablo hücrelerinden kaldırılır
  3. Sonuç, sütun genişlikleri CellFormat.Width özelliği tarafından belirlenen ve kullanıcı metin girdiğinde veya sayfa yeniden boyutlandırıldığında sütunları otomatik olarak yeniden boyutlandırılmayan bir tablodur

Aşağıdaki kod örneği, belirtilen tablo için otomatik sığdırmanın nasıl devre dışı bırakılacağını ve sabit genişliğin nasıl etkinleştirileceğini gösterir:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
# Disable autofitting on this table.
table.auto_fit(aw.tables.AutoFitBehavior.FIXED_COLUMN_WIDTHS)
doc.save(ARTIFACTS_DIR + "WorkingWithTables.auto_fit_table_to_fixed_column_widths.docx")

Hücre Genişliğini Hesaplarken Öncelik Sırası

Aspose.Words, kullanıcıların bir tablonun veya hücrenin genişliğini CellFormat de dahil olmak üzere birden fazla nesne aracılığıyla tanımlamasına olanak tanır; Width özelliği çoğunlukla önceki sürümlerden kalmıştır, ancak yine de hücre genişliğini ayarlamayı basitleştirmek için kullanışlıdır.

CellFormat.Width özelliğinin, tabloda zaten mevcut olan diğer genişlik özelliklerine bağlı olarak farklı şekilde çalıştığını bilmek önemlidir.

Aspose.Words, hücre genişliklerini hesaplamak için aşağıdaki sırayı kullanır:

Emir Mülk Tanım
1 AllowAutoFit belirlendi AutoFit etkinse:
- tablo, içeriğe uyum sağlamak için tercih edilen genişliği aşacak şekilde büyüyebilir; genellikle tercih edilen genişliğin altına küçülmez
- CellFormat.Width değerindeki herhangi bir değişiklik göz ardı edilir ve hücre bunun yerine içeriğine sığar
2 Points veya Percent değerine sahip PreferredWidthType CellFormat.Width göz ardı ediliyor
3 Auto değerine sahip PreferredWidthType CellFormat.Width‘teki değer kopyalanır ve hücrenin tercih edilen genişliği (nokta olarak) olur

Hücreler Arasındaki Boşluğa İzin Ver

Microsoft Word’teki “Hücre aralığı” seçeneğine benzer şekilde tablo hücreleri arasında herhangi bir ek boşluk alabilir veya ayarlayabilirsiniz. Bu, AllowCellSpacing özelliği kullanılarak yapılabilir.

Bu seçeneklerin bir belgedeki gerçek tabloya nasıl uygulandığına dair bir örnek aşağıdaki resimde görülebilir.

biçimlendirme-hücreler arası temeller-aspose-words-python

Aşağıdaki kod örneği, hücreler arasındaki boşluğun nasıl ayarlanacağını gösterir:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
table.allow_cell_spacing = True
table.cell_spacing = 2
doc.save(ARTIFACTS_DIR + "WorkingWithTableStylesAndFormatting.allow_cell_spacing.docx")

Kenarlık ve Gölgelendirme Uygulamak

Kenarlıklar ve gölgeleme, Table.SetBorder, Table.SetBorders ve Table.SetShading kullanılarak tablonun tamamına veya CellFormat.Borders ve CellFormat.Shading kullanılarak yalnızca belirli hücrelere uygulanabilir. Ayrıca satır sınırları RowFormat.Borders kullanılarak ayarlanabilir ancak gölgelendirme bu şekilde uygulanamaz.

Aşağıdaki resimler Microsoft Word’teki kenarlık ve gölge ayarlarını ve Aspose.Words’deki bunlara karşılık gelen özellikleri göstermektedir.

formatting-border-line-aspose-words-python

formatting-cell-color-aspose-words-python

Aşağıdaki kod örneği, bir tablonun ve hücrenin farklı kenarlıklar ve gölgelerle nasıl biçimlendirileceğini gösterir:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
table = builder.start_table()
builder.insert_cell()
# Set the borders for the entire table.
table.set_borders(aw.LineStyle.SINGLE, 2.0, drawing.Color.black)
# Set the cell shading for this cell.
builder.cell_format.shading.background_pattern_color = drawing.Color.red
builder.writeln("Cell #1")
builder.insert_cell()
# Specify a different cell shading for the second cell.
builder.cell_format.shading.background_pattern_color = drawing.Color.green
builder.writeln("Cell #2")
builder.end_row()
# Clear the cell formatting from previous operations.
builder.cell_format.clear_formatting()
builder.insert_cell()
# Create larger borders for the first cell of this row. This will be different
# compared to the borders set for the table.
builder.cell_format.borders.left.line_width = 4.0
builder.cell_format.borders.right.line_width = 4.0
builder.cell_format.borders.top.line_width = 4.0
builder.cell_format.borders.bottom.line_width = 4.0
builder.writeln("Cell #3")
builder.insert_cell()
builder.cell_format.clear_formatting()
builder.writeln("Cell #4")
doc.save(ARTIFACTS_DIR + "WorkingWithTableStylesAndFormatting.format_table_and_cell_with_different_borders.docx")