Buat Tabel dari DataTable

Contents
[ ]

Seringkali aplikasi Anda akan menarik data dari database dan menyimpannya dalam bentuk DataTable. Anda mungkin ingin memasukkan data ini dengan mudah ke dalam dokumen Anda sebagai tabel baru dan dengan cepat menerapkan pemformatan ke seluruh tabel.

Menggunakan Aspose.Words, Anda dapat dengan mudah mengambil data dari database dan menyimpannya sebagai tabel:

  1. Buat objek DocumentBuilder baru pada Document Anda.
  2. Mulai tabel baru menggunakan DocumentBuilder.
  3. Jika kita ingin menyisipkan nama masing-masing kolom dari DataTable kita sebagai baris header, ulangi setiap kolom data dan tulis nama kolom ke dalam satu baris dalam tabel.
  4. Iterate melalui setiap DataRow dalam DataTable:
    1. Iterate melalui setiap objek dalam DataRow.
    2. Sisipkan objek ke dalam dokumen menggunakan DocumentBuilder. Metode yang digunakan bergantung pada jenis objek yang disisipkan, mis. DocumentBuilder.writeln() untuk teks dan DocumentBuilder.insertImage() untuk array byte yang mewakili gambar.
    3. Pada akhir pemrosesan baris data, akhiri juga baris yang dibuat oleh DocumentBuilder dengan menggunakan DocumentBuilder.endRow().
  5. Setelah semua baris dari DataTable diproses, selesaikan tabel dengan memanggil DocumentBuilder.endTable().
  6. Terakhir, kita dapat mengatur gaya tabel yang diinginkan menggunakan salah satu properti tabel yang sesuai seperti Table.getStyleIdentifier() untuk menerapkan pemformatan secara otomatis ke seluruh tabel. Data berikut dalam DataTable kita digunakan dalam contoh ini:

build-a-table-from-a-datatable-aspose-words-java-1

Contoh kode berikut menunjukkan cara menjalankan algoritme di atas dalam Aspose.Words:

// 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;
}

Metode ini kemudian dapat dengan mudah dipanggil menggunakan DocumentBuilder dan data Anda.

Contoh kode berikut menunjukkan cara mengimpor data dari DataTable dan memasukkannya ke dalam tabel baru di dokumen:

// 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");

Tabel yang ditunjukkan pada gambar di bawah ini dibuat dengan menjalankan kode di atas.

build-a-table-from-a-datatable-aspose-words-java-2