Posizionare una tabella

Ci sono tavoli galleggianti e tavoli in linea:

  • Inline tables sono posizionati sullo stesso livello del testo e sono collocati in un flusso di testo che circonda solo la tabella sopra e sotto. Le tabelle in linea verranno sempre visualizzate tra i paragrafi in cui sono state inserite.
  • Floating tables sono sovrapposti sul testo e la posizione della tabella rispetto al paragrafo è determinata dall’ancoraggio della tabella. Per questo motivo, la posizione della tabella mobile nel documento è influenzata dalle impostazioni di posizionamento verticale e orizzontale.

A volte è necessario posizionare una tabella in un documento in un certo modo. Per fare ciò, è necessario utilizzare gli strumenti di allineamento e impostare i rientri tra la tabella e il testo circostante.

In questo articolo, discuteremo quali opzioni Aspose.Words fornisce per il posizionamento.

Specificare la posizione della tabella in linea

È possibile impostare la posizione di una tabella in linea utilizzando l’API Aspose.Words e la proprietà Alignment. Pertanto, è possibile regolare l’allineamento della tabella rispetto alla pagina del documento.

L’esempio di codice seguente mostra come impostare la posizione di una tabella in linea:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>(MyDir + u"Tables.docx");
auto table = System::ExplicitCast<Table>(doc->GetChild(NodeType::Table, 0, true));
// Align the table to the center of the page.
table->set_Alignment(TableAlignment::Center);

Ottieni l’allineamento della tabella mobile

Se il testo della tabella è impostato su Around, è possibile ottenere l’allineamento orizzontale e verticale della tabella utilizzando le proprietà RelativeHorizontalAlignment e RelativeVerticalAlignment.

Con other types of text wrapping, è possibile ottenere l’allineamento della tabella in linea utilizzando la proprietà Alignment.

Il seguente esempio di codice mostra come ottenere l’allineamento della tabella:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>(MyDir + u"Tables.docx");
auto table = System::ExplicitCast<Table>(doc->GetChild(NodeType::Table, 0, true));
if (table->get_TextWrapping() == TextWrapping::Around)
{
std::cout << System::EnumGetName(table->get_RelativeHorizontalAlignment()) << std::endl;
std::cout << System::EnumGetName(table->get_RelativeVerticalAlignment()) << std::endl;
}
else
{
std::cout << System::EnumGetName(table->get_Alignment()) << std::endl;
}

Ottieni la posizione della tabella mobile

La posizione di una tabella mobile viene determinata utilizzando le seguenti proprietà:

Il seguente esempio di codice mostra come ottenere la posizione di una tabella mobile:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>(MyDir + u"Table wrapped by text.docx");
for (const auto& table : System::IterateOver<Table>(doc->get_FirstSection()->get_Body()->get_Tables()))
{
// If the table is floating type, then print its positioning properties.
if (table->get_TextWrapping() == TextWrapping::Around)
{
std::cout << System::EnumGetName(table->get_HorizontalAnchor()) << std::endl;
std::cout << System::EnumGetName(table->get_VerticalAnchor()) << std::endl;
std::cout << table->get_AbsoluteHorizontalDistance() << std::endl;
std::cout << table->get_AbsoluteVerticalDistance() << std::endl;
std::cout << System::Convert::ToString(table->get_AllowOverlap()) << std::endl;
std::cout << table->get_AbsoluteHorizontalDistance() << std::endl;
std::cout << System::EnumGetName(table->get_RelativeVerticalAlignment()) << std::endl;
std::cout << ".............................." << std::endl;
}
}

Imposta la posizione della tavola mobile

Proprio come ottenere, è possibile impostare la posizione di una tabella mobile utilizzando la stessa API Aspose.Words.

È importante sapere che l’allineamento e la distanza orizzontale e verticale sono proprietà combinate e una può reimpostare l’altra. Ad esempio, l’impostazione di RelativeHorizontalAlignment ripristinerà il valore predefinito di AbsoluteHorizontalDistance e viceversa. Lo stesso vale per la disposizione verticale.

Il seguente esempio di codice mostra come impostare la posizione di una tabella mobile:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>(MyDir + u"Table wrapped by text.docx");
SharedPtr<Table> table = doc->get_FirstSection()->get_Body()->get_Tables()->idx_get(0);
table->set_AbsoluteHorizontalDistance(10);
table->set_RelativeVerticalAlignment(VerticalAlignment::Center);
doc->Save(ArtifactsDir + u"WorkingWithTables.FloatingTablePosition.docx");

Ottieni la distanza tra la tabella e il testo circostante

Aspose.Words offre anche l’opportunità di scoprire le distanze tra le tabelle e i testi circostanti:

L’esempio di codice seguente mostra come ottenere la distanza tra una tabella e il testo circostante:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>(MyDir + u"Tables.docx");
std::cout << "\nGet distance between table left, right, bottom, top and the surrounding text." << std::endl;
auto table = System::ExplicitCast<Table>(doc->GetChild(NodeType::Table, 0, true));
std::cout << table->get_DistanceTop() << std::endl;
std::cout << table->get_DistanceBottom() << std::endl;
std::cout << table->get_DistanceRight() << std::endl;
std::cout << table->get_DistanceLeft() << std::endl;