Trabalhando com listas
Uma lista em um documento Microsoft Word é um conjunto de propriedades de formatação de parágrafo. As listas podem ser usadas em documentos para estruturar, organizar e destacar texto. As listas são uma ótima maneira de organizar dados em documentos de uma forma que facilita a absorção e a compreensão dos pontos-chave pelos leitores.
Cada lista pode ter até 9 níveis, e propriedades de formatação como estilo de número, valor inicial, recuo, posição de tabulação e outras são definidas separadamente para cada nível.
No Aspose.Words, trabalhar com listas é representado pelo namespace Lists. Porém, o objeto List sempre pertence ao ListCollection.
Este artigo descreve como trabalhar programaticamente com listas usando Aspose.Words.
Crie listas aplicando formatação de lista
Aspose.Words permite a fácil criação de listas aplicando formatação de lista. DocumentBuilder fornece a propriedade ListFormat que retorna um objeto ListFormat. Este objeto possui vários métodos para iniciar e terminar uma lista e para aumentar/diminuir o recuo. Existem dois tipos gerais de listas em Microsoft Word: com marcadores e numeradas:
- Para iniciar uma lista com marcadores, ligue para ApplyBulletDefault
- Para iniciar uma lista numerada, ligue para ApplyNumberDefault
O marcador ou número e a formatação são adicionados ao parágrafo atual e a todos os parágrafos adicionais criados usando DocumentBuilder até que RemoveNumbers seja chamado para interromper a formatação da lista com marcadores.
Nos documentos do Word, as listas podem consistir em até nove níveis. A formatação da lista para cada nível especifica qual marcador ou número é usado, recuo à esquerda, espaço entre o marcador e o texto, etc. Os métodos a seguir alteram o nível da lista e aplicam as propriedades de formatação do novo nível:
- Para aumentar o nível da lista do parágrafo atual em um nível, chame ListIndent
- Para diminuir o nível da lista do parágrafo atual em um nível, chame ListOutdent
Você também pode usar a propriedade ListLevelNumber para obter ou definir o nível de lista do parágrafo.
O exemplo de código a seguir mostra como construir uma lista multinível:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
builder.ListFormat.ApplyNumberDefault(); | |
builder.Writeln("Item 1"); | |
builder.Writeln("Item 2"); | |
builder.ListFormat.ListIndent(); | |
builder.Writeln("Item 2.1"); | |
builder.Writeln("Item 2.2"); | |
builder.ListFormat.ListIndent(); | |
builder.Writeln("Item 2.2.1"); | |
builder.Writeln("Item 2.2.2"); | |
builder.ListFormat.ListOutdent(); | |
builder.Writeln("Item 2.3"); | |
builder.ListFormat.ListOutdent(); | |
builder.Writeln("Item 3"); | |
builder.ListFormat.RemoveNumbers(); | |
dataDir = dataDir + "DocumentBuilderSetMultilevelListFormatting_out.doc"; | |
doc.Save(dataDir); |
Especifique a formatação para um nível de lista
Os objetos no nível da lista são criados automaticamente quando uma lista é criada. Use as propriedades e métodos da classe ListLevel para controlar a formatação de níveis individuais de uma lista.
Lista de reinicialização para cada seção
Você pode reiniciar uma lista para cada seção usando a propriedade IsRestartAtEachSection. Observe que esta opção é suportada apenas nos formatos de documento RTF, DOC e DOCX. Esta opção será gravada em DOCX somente se OoxmlCompliance for superior a Ecma376.
O exemplo de código a seguir mostra como criar uma lista e reiniciá-la para cada seção:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(); | |
doc.Lists.Add(ListTemplate.NumberDefault); | |
List list = doc.Lists[0]; | |
// Set true to specify that the list has to be restarted at each section. | |
list.IsRestartAtEachSection = true; | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
builder.ListFormat.List = list; | |
for (int i = 1; i < 45; i++) | |
{ | |
builder.Writeln(String.Format("List Item {0}", i)); | |
// Insert section break. | |
if (i == 15) | |
builder.InsertBreak(BreakType.SectionBreakNewPage); | |
} | |
// IsRestartAtEachSection will be written only if compliance is higher then OoxmlComplianceCore.Ecma376 | |
OoxmlSaveOptions options = new OoxmlSaveOptions(); | |
options.Compliance = OoxmlCompliance.Iso29500_2008_Transitional; | |
dataDir = dataDir + "RestartAtEachSection_out.docx"; | |
// Save the document to disk. | |
doc.Save(dataDir, options); |