สร้างตารางจากDataTable

Contents
[ ]

บ่อยครั้งที่โปรแกรมประยุกต์ของคุณจะดึงข้อมูลจากฐานข้อมูลและเก็บไว้ในรูปแบบของDataTable คุณอาจต้องการแทรกข้อมูลนี้ลงในเอกสารของคุณเป็นตารางใหม่ได้อย่างง่ายดายและใช้.

โดยใช้Aspose.Wordsคุณสามารถดึงข้อมูลจากฐานข้อมูลและจัดเก็บเป็นตาราง:

  1. สร้างวัตถุใหม่DocumentBuilderบนDocumentของคุณ.
  2. เริ่มต้นตารางใหม่โดยใช้DocumentBuilder.
  3. ถ้าเราต้องการแทรกชื่อของแต่ละคอลัมน์จากDataTableของเราเป็นแถวส่วนหัวแล้วซ้ำผ่านแต่ละคอลัมน์ข้อมูลและเขียนชื่อคอลัมน์ลงในแถวในตาราง.
  4. ย้ำผ่านแต่ละDataRowในDataTable:
    1. ย้ำผ่านแต่ละวัตถุในDataRow.
    2. ใส่วัตถุลงในเอกสารด้วยDocumentBuilder วิธีการที่ใช้ขึ้นอยู่กับชนิดของวัตถุที่ถูกแทรกเช่นDocumentBuilder.writeln()สำหรับข้อความและDocumentBuilder.insertImage()สำหรับอาร์เรย์ไบต์ที่แ.
    3. ในตอนท้ายของการประมวลผลของแถวข้อมูลยังสิ้นสุดแถวที่ถูกสร้างขึ้นโดยDocumentBuilderโดยใช้DocumentBuilder.endRow().
  5. เมื่อแถวทั้งหมดจากDataTableได้รับการประมวลผลเสร็จสิ้นตารางโดยการโทรDocumentBuilder.endTable().
  6. ในที่สุด เราก็สามารถตั้งค่ารูปแบบตารางที่ต้องการได้โดยใช้คุณสมบัติตารางที่เหมาะสมอย่างใดอย่างหนึ่ง เช่น Table.getStyleIdentifier() เพื่อนำการจัดรูปแบบไปใช้กับตารางทั้งหมดโดยอัตโนมัติ. ข้อมูลต่อไปนี้ในDataTableของเราถูกนำมาใช้ในตัวอย่างนี้:

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

ตัวอย่างรหัสต่อไปนี้แสดงวิธีการดำเนินการอัลกอริทึมข้างต้นใน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;
}

วิธีการนั้นสามารถเรียกได้อย่างง่ายดายโดยใช้ของคุณDocumentBuilderและข้อมูล.

ตัวอย่างรหัสต่อไปนี้แสดงวิธีการนำเข้าข้อมูลจากDataTableและแทรกลงในตารางใหม่ในเอกสาร:

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

ตารางที่แสดงในภาพด้านล่างจะผลิตโดยการเรียกใช้รหัสข้างต้น.

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