package com.aspose.words.examples.programming_documents.tables.creation; import java.sql.ResultSetMetaData; import java.sql.Timestamp; import java.text.SimpleDateFormat; import com.aspose.words.Document; import com.aspose.words.DocumentBuilder; import com.aspose.words.Orientation; import com.aspose.words.ParagraphAlignment; import com.aspose.words.StyleIdentifier; import com.aspose.words.Table; import com.aspose.words.TableStyleOptions; import com.aspose.words.examples.Utils; import com.aspose.words.net.System.Data.DataTable; public class BuildTableFromDataTable { private static final String dataDir = Utils.getSharedDataDir(BuildTableFromDataTable.class) + "Tables/"; public static void main(String[] args) throws Exception { // Create a new document. Document doc = new Document(); // We can position where we want the table to be inserted and also specify any extra formatting to be // applied onto the table as well. DocumentBuilder builder = new DocumentBuilder(doc); // We want to rotate the page landscape as we expect a wide table. doc.getFirstSection().getPageSetup().setOrientation(Orientation.LANDSCAPE); // Retrieve the data from our data source which is stored as a DataTable. DataTable dataTable = null; //getEmployees(databaseDir); // 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(dataDir + "Table.FromDataTable_Out.docx"); } /* * Imports the content from the specified DataTable into a new Aspose.Words * Table object. The table is inserted at the current position of the * document builder and using the current builder's formatting if any is * defined. */ public static Table importTableFromDataTable(DocumentBuilder builder, DataTable dataTable, boolean importColumnHeadings) throws Exception { Table table = builder.startTable(); ResultSetMetaData metaData = dataTable.getResultSet().getMetaData(); int numColumns = metaData.getColumnCount(); // Check if the names of the columns 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 (int i = 1; i < numColumns + 1; i++) { builder.insertCell(); builder.writeln(metaData.getColumnName(i)); } builder.endRow(); // Restore the original formatting. builder.getFont().setBold(boldValue); builder.getParagraphFormat().setAlignment(paragraphAlignmentValue); } // Iterate through all rows and then columns of the data. while (dataTable.getResultSet().next()) { for (int i = 1; i < numColumns + 1; i++) { // Insert a new cell for each object. builder.insertCell(); // Retrieve the current record. Object item = dataTable.getResultSet().getObject(metaData.getColumnName(i)); // This is name of the data type. String typeName = item.getClass().getSimpleName(); if (typeName.equals("byte[]")) { // Assume a byte array is an image. Other data types can be added here. builder.insertImage((byte[]) item, 50, 50); } else if (typeName.equals("Timestamp")) { // Define a custom format for dates and times. builder.write(new SimpleDateFormat("MMMM d, yyyy").format((Timestamp) item)); } else { // By default any other item will be inserted as text. builder.write(item.toString()); } } // 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; } }