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à:
- HorizontalAnchor – un oggetto per calcolare il posizionamento orizzontale di una tabella mobile
- VerticalAnchor – un oggetto per calcolare il posizionamento verticale di una tabella mobile
- AbsoluteHorizontalDistance – posizione assoluta della tabella mobile orizzontale
- AbsoluteVerticalDistance – posizione assoluta della tabella verticale mobile
- AllowOverlap – opzione per abilitare/disabilitare la sovrapposizione con altri oggetti mobili
- RelativeHorizontalAlignment – allineamento orizzontale relativo della tabella mobile.
- RelativeVerticalAlignment – allineamento verticale relativo della tabella mobile.
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:
- DistanceTop – il valore della distanza dall’alto
- DistanceBottom – il valore della distanza di percezione
- DistanceRight – valore della distanza a destra
- DistanceLeft – valore della distanza a sinistra
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; |