Bir tablo DataTable inşa et
Çok sık, uygulamanız veritabanından veri çekecek ve onu bir DataTable biçiminde depolayacak. Bu veriyi belgenize yeni bir tablo olarak kolayca eklemek ve tüm tabloya hızlıca bir biçimlendirme uygulamak isteyebilirsiniz.
Aspose.Words kullanarak bir veritabanından verileri kolayca alabilir ve tablo olarak depolayabilirsiniz:
- Yeni bir DocumentBuilder nesnesi senin Documentde oluştur.
- Yeni bir tablo DocumentBuilder‘u kullanarak başlatın.
- Eğer her bir sütundan gelen adları, DataTable olarak adlandırdığımız satırı başlık satırı olarak kullanmak istiyorsak o zaman veri sütunlarında dolaşalım ve tabloya bir satırda sütun adlarını yazalım.
- Her bir DataRow‘te DataTable ile dolaşın":
- Her nesneyi DataRow içinde yinele.
- Nesneyi DocumentBuilder kullanarak belgenin içine yerleştirin. Kullanılan yöntem nesnenin eklendiği türüne bağlıdır örneğin) [DocumentBuilder.writeln()](https://reference.aspose.com/words/java/com.aspose.words/documentbuilder/#writeln() için metin ve) [DocumentBuilder.insertImage()](https://reference.aspose.com/words/java/com.aspose.words/documentbuilder/#insertImage(byte[]) için bir bayt dizisi (bir görüntü temsil eder).
- Veri satırı işleme sonunda, DocumentBuilder tarafından oluşturulan satırın sonunu DocumentBuilder.endRow() kullanarak da bitirmelisiniz.
- Tüm satırlar DataTable ‘dan işlendikten sonra tablonun tamamlanması için DocumentBuilder.endTable()‘i çağırın.
- Son olarak, istenilen tablo stilini uygun bir tablo özelliği kullanarak ayarlayabiliriz örneğin Table.getStyleIdentifier() otomatik olarak tüm tabloya biçimlendirme uygulayan. Aşağıdaki veriler, bu örnekte DataTable olarak kullanılır
Aşağıdaki örnek kod, yukarıdaki algoritmanın Aspose.Words ‘da nasıl yürütüleceğini göstermektedir
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git. | |
/// <summary> | |
/// Imports the content from the specified DataTable into a new Aspose.Words Table object. | |
/// The table is inserted at the document builder's current position and using the current builder's formatting if any is defined. | |
/// </summary> | |
public Table importTableFromDataTable(DocumentBuilder builder, DataTable dataTable, | |
boolean importColumnHeadings) | |
{ | |
Table table = builder.startTable(); | |
// Check if the columns' names from the data source are to be included in a header row. | |
if (importColumnHeadings) | |
{ | |
// Store the original values of these properties before changing them. | |
boolean boldValue = builder.getFont().getBold(); | |
int paragraphAlignmentValue = builder.getParagraphFormat().getAlignment(); | |
// Format the heading row with the appropriate properties. | |
builder.getFont().setBold(true); | |
builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER); | |
// Create a new row and insert the name of each column into the first row of the table. | |
for (DataColumn column : dataTable.getColumns()) | |
{ | |
builder.insertCell(); | |
builder.writeln(column.getColumnName()); | |
} | |
builder.endRow(); | |
// Restore the original formatting. | |
builder.getFont().setBold(boldValue); | |
builder.getParagraphFormat().setAlignment(paragraphAlignmentValue); | |
} | |
for (DataRow dataRow : (Iterable<DataRow>) dataTable.getRows()) | |
{ | |
for (Object item : dataRow.getItemArray()) | |
{ | |
// Insert a new cell for each object. | |
builder.insertCell(); | |
switch (item.getClass().getName()) | |
{ | |
case "DateTime": | |
// Define a custom format for dates and times. | |
Date dateTime = (Date) item; | |
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMMM d, yyyy"); | |
builder.write(simpleDateFormat.format(dateTime)); | |
break; | |
default: | |
// By default any other item will be inserted as text. | |
builder.write(item.toString()); | |
break; | |
} | |
} | |
// After we insert all the data from the current record, we can end the table row. | |
builder.endRow(); | |
} | |
// We have finished inserting all the data from the DataTable, we can end the table. | |
builder.endTable(); | |
return table; | |
} |
Yöntem daha sonra kolayca DocumentBuilder ve veri kullanarak çağrılabilir.
Aşağıdaki kod örneği, bir DataTable
içindeki verileri nasıl içe aktaracağınızı ve yeni bir tabloya belgeden nasıl ekleyeceğinizi göstermektedir:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git. | |
Document doc = new Document(); | |
// We can position where we want the table to be inserted and specify any extra formatting to the table. | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
// We want to rotate the page landscape as we expect a wide table. | |
doc.getFirstSection().getPageSetup().setOrientation(Orientation.LANDSCAPE); | |
DataSet ds = new DataSet(); | |
ds.readXml(getMyDir() + "List of people.xml"); | |
// Retrieve the data from our data source, which is stored as a DataTable. | |
DataTable dataTable = ds.getTables().get(0); | |
// Build a table in the document from the data contained in the DataTable. | |
Table table = importTableFromDataTable(builder, dataTable, true); | |
// We can apply a table style as a very quick way to apply formatting to the entire table. | |
table.setStyleIdentifier(StyleIdentifier.MEDIUM_LIST_2_ACCENT_1); | |
table.setStyleOptions(TableStyleOptions.FIRST_ROW | TableStyleOptions.ROW_BANDS | TableStyleOptions.LAST_COLUMN); | |
// For our table, we want to remove the heading for the image column. | |
table.getFirstRow().getLastCell().removeAllChildren(); | |
doc.save(getArtifactsDir() + "WorkingWithTables.BuildTableFromDataTable.docx"); |
Aşağıdaki resimde gösterilen tablo, yukarıdaki kod çalıştırılarak üretilir.