بناء جدول من 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