skapa tabeller i word-dokument med Java

Microsoft Word är ett populärt ordbehandlingsprogram som används för att skapa olika typer av dokument. Dessa dokument kan innehålla flera typer av element, inklusive text, bilder, tabeller och diagram. När det gäller att automatisera dokumentskapande och manipulering i Java, kan du behöva en enkel lösning för att skapa tabeller i Word-dokument. Så i det här blogginlägget kommer vi att utforska hur man skapar tabeller i Word-dokument i en Java-applikation.

Java-bibliotek för att skapa tabeller i Word-dokument

Aspose.Words for Java är ett API som tillåter Java-utvecklare att arbeta med Microsoft Word-dokument programmatiskt. Den tillhandahåller ett brett utbud av funktioner för att skapa, ändra och manipulera Word-dokument, vilket gör det till ett värdefullt verktyg för att automatisera dokumentgenerering och bearbetningsuppgifter. Vi kommer att använda det här biblioteket för att infoga tabeller i ett Word-dokument.

Du kan ladda ner biblioteket eller installera det med hjälp av följande Maven-konfigurationer.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>23.10</version>
    <classifier>jdk17</classifier>
</dependency>

Skapa en tabell i ett Word-dokument i Java

Det finns två sätt att skapa tabeller i Word-dokument med Aspose.Words för Java:

  • Använder DocumentBuilder
  • Använda DOM (Document Object Model)

Du kan välja den metod som bäst passar dina behov. Så låt oss utforska var och en av dessa metoder i detalj.

Skapa tabell med DocumentBuilder

Klassen DocumentBuilder ger dig ett snabbt och enkelt sätt att skapa dynamiska dokument från grunden eller bearbeta befintliga dokument. Den erbjuder en rad funktioner för att infoga olika innehållselement som text, kryssrutor, OLE-objekt, stycken, listor, tabeller, bilder och mer.

Följande är stegen som använder klassen DocumentBuilder för att skapa en tabell i ett Word-dokument i Java.

  • Skapa ett objekt av klassen Document för att ladda eller skapa Word-dokumentet.
  • Skapa ett objekt av klassen DocumentBuilder.
  • Starta en tabell med metoden DocumentBuilder.startTable().
  • Infoga en cell med metoden DocumentBuilder.insertCell().
  • (Valfritt) Använd formatering på cellen, till exempel teckensnitt och justering.
  • Infoga text i cellen med metoden DocumentBuilder.write().
  • Upprepa infogning av celler och text i celler efter behov.
  • Avsluta en rad när du är klar med att infoga celler med metoden DocumentBuilder.endRow().
  • Sluttabell när du har infogat alla rader med metoden DocumentBuilder.endTable().
  • Spara Word-dokumentet med metoden Document.save().

Följande kodavsnitt visar hur man skapar en tabell i ett Word-dokument med Java.

// Skapa eller ladda dokument.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Skapa en ny tabell och infoga cell.
Table table = builder.startTable();
builder.insertCell();

// Tabellbreddformatering måste tillämpas efter att minst en rad finns i tabellen.
table.setLeftIndent(20.0);

// Ställ in höjd och definiera höjdregeln för rubrikraden.
builder.getRowFormat().setHeight(40.0);
builder.getRowFormat().setHeightRule(HeightRule.AT_LEAST);

builder.getCellFormat().getShading().setBackgroundPatternColor(new Color((198), (217), (241)));
builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
builder.getFont().setSize(16.0);
builder.getFont().setName("Arial");
builder.getFont().setBold(true);

builder.getCellFormat().setWidth(100.0);
builder.write("Header Row,\n Cell 1");

// Vi behöver inte ange den här cellens bredd eftersom den ärvs från föregående cell.
builder.insertCell();
builder.write("Header Row,\n Cell 2");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Header Row,\n Cell 3");
builder.endRow();

builder.getCellFormat().getShading().setBackgroundPatternColor(Color.WHITE);
builder.getCellFormat().setWidth(100.0);
builder.getCellFormat().setVerticalAlignment(CellVerticalAlignment.CENTER);

// Återställ höjden och definiera en annan höjdregel för tabellkroppen.
builder.getRowFormat().setHeight(30.0);
builder.getRowFormat().setHeightRule(HeightRule.AUTO);
builder.insertCell();
        
// Återställ teckensnittsformatering.
builder.getFont().setSize(12.0);
builder.getFont().setBold(false);

builder.write("Row 1, Cell 1 Content");
builder.insertCell();
builder.write("Row 1, Cell 2 Content");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Row 1, Cell 3 Content");
builder.endRow();

builder.insertCell();
builder.getCellFormat().setWidth(100.0);
builder.write("Row 2, Cell 1 Content");

builder.insertCell();
builder.write("Row 2, Cell 2 Content");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Row 2, Cell 3 Content.");
builder.endRow();

// Slutbord.
builder.endTable();

// Spara dokument.
doc.save("table.docx");

Följande är skärmdumpen av tabellen som vi har skapat med hjälp av kodexemplet ovan.

Tabell i ett Word-dokument

Skapa tabell med DOM

Document Object Model (DOM) är en representation i minnet av ett Word-dokument som låter dig läsa, manipulera och modifiera innehållet och formateringen av ett Word-dokument. Följande steg visar hur man skapar en tabell i ett Word-dokument med hjälp av DOM.

  • Skapa ett objekt av klassen Document för att ladda eller skapa Word-dokumentet.
  • Skapa ett objekt av klassen Table och infoga tabell i dokumentet med metoden Document.getFirstSection().getBody().appendChild(Table).
  • Skapa ett objekt av klassen Row och infoga det i tabellen med metoden Table.appendChild(Row).
  • Skapa ett objekt av klassen Cell, ställ in formateringsalternativ och lägg till text i cellen.
  • Infoga cell i raden med metoden Row.appendChild(Cell).
  • Upprepa processen för så många rader du vill.
  • Spara Word-dokumentet med metoden Document.save().

Följande kodsnutt visar hur man skapar en tabell i ett Word-dokument i Java.

// Skapa eller ladda dokument.
Document doc = new Document();
        
// Vi börjar med att skapa tabellobjektet. Observera att vi måste skicka dokumentobjektet
// till konstruktören för varje nod. Detta beror på att varje nod vi skapar måste tillhöra
// till något dokument.
Table table = new Table(doc);
doc.getFirstSection().getBody().appendChild(table);

// Här skulle vi kunna ringa EnsureMinimum för att skapa raderna och cellerna åt oss. Denna metod används
// för att säkerställa att den angivna noden är giltig. I det här fallet bör en giltig tabell ha minst en rad och en cell.

// Istället kommer vi att hantera att skapa raden och tabellen själva.
// Detta skulle vara det bästa sättet att göra detta om vi skapade en tabell i en algoritm.
Row row = new Row(doc);
row.getRowFormat().setAllowBreakAcrossPages(true);
table.appendChild(row);

// Vi kan nu tillämpa alla inställningar för automatisk passning.
table.autoFit(AutoFitBehavior.FIXED_COLUMN_WIDTHS);

Cell cell = new Cell(doc);
cell.getCellFormat().getShading().setBackgroundPatternColor(Color.BLUE);
cell.getCellFormat().setWidth(80.0);
cell.appendChild(new Paragraph(doc));
cell.getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 1 Text"));

row.appendChild(cell);

// Vi skulle sedan upprepa processen för de andra cellerna och raderna i tabellen.
// Vi kan också påskynda saker och ting genom att klona befintliga celler och rader.
row.appendChild(cell.deepClone(false));
row.getLastCell().appendChild(new Paragraph(doc));
row.getLastCell().getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 2 Text"));

// Spara dokument.
doc.save("table.docx");

Infoga en kapslad tabell i Word-dokument

Det kan också vara fallet när du behöver skapa en kapslad tabell, som finns inuti en cell i den överordnade tabellen. Du kan göra det utan att gå igenom en komplicerad process. Skapa först en överordnad tabell och anrop sedan metoden DocumentBuilder.moveTo(Cell.getFirstParagraph()) för att flytta kontrollen in i den önskade cellen i den överordnade tabellen. När du är klar skapar du en ny tabell på samma sätt.

Följande kodavsnitt visar hur man skapar en kapslad tabell i ett Word-dokument med Java.

// Skapa eller ladda dokument.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Infoga cell.
Cell cell = builder.insertCell();
builder.writeln("Outer Table Cell 1");

builder.insertCell();
builder.writeln("Outer Table Cell 2");

// Detta anrop är viktigt för att skapa en kapslad tabell i den första tabellen. 
// Utan detta anrop kommer cellerna som infogas nedan att läggas till i den yttre tabellen.
builder.endTable();

// Flytta till den första cellen i den yttre tabellen.
builder.moveTo(cell.getFirstParagraph());

// Bygg det inre bordet.
builder.insertCell();
builder.writeln("Inner Table Cell 1");
builder.insertCell();
builder.writeln("Inner Table Cell 2");
builder.endTable();

// Spara dokument.
doc.save("table.docx");

Följande är skärmdumpen av den kapslade tabellen vi har skapat ovan.

Skapa en Word-tabell från HTML i Java

Du kan också skapa en tabell i ett Word-dokument med HTML-sträng och här är stegen som ska följas.

  • Skapa ett objekt av klassen Document för att ladda eller skapa Word-dokumentet.
  • Skapa ett objekt av klassen DocumentBuilder.
  • Infoga HTML-strängen för tabellen i dokumentet med metoden DocumentBuilder.insertHtml(String).
  • Slutligen sparar du dokumentet med metoden Document.save().

Nedan finns kodavsnittet för att generera en Word-tabell från en HTML-sträng.

// Skapa eller ladda dokument.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Observera att AutoFitSettings inte gäller för tabeller som infogas från HTML.
builder.insertHtml("<table>" +
                   "<tr>" +
                   "<td>Row 1, Cell 1</td>" +
                   "<td>Row 1, Cell 2</td>" +
                   "</tr>" +
                   "<tr>" +
                   "<td>Row 2, Cell 2</td>" +
                   "<td>Row 2, Cell 2</td>" +
                   "</tr>" +
                   "</table>");

// Spara dokument.
doc.save("table.docx");

Skaffa en gratis licens

Du kan få en tillfällig licens för att använda Aspose.Words för Java utan utvärderingsbegränsningar.

Slutsats

I det här blogginlägget har vi utforskat hur man skapar tabeller i Word-dokument med Java. Du har sett hur man skapar en tabell med hjälp av dokumentbyggaren eller DOM, skapar en kapslad tabell och skapar en tabell från en HTML-sträng. Genom att installera biblioteket och följa riktlinjerna kan du enkelt integrera funktionen för att skapa tabeller i din Java-applikation.

Aspose.Words för Java tillhandahåller många andra funktioner och formateringsalternativ, så att du enkelt kan skapa rika och komplexa dokument. För att lära dig mer om Aspose.Words för Java, utforska dess omfattande dokumentation och exempel. Om du har några frågor är du välkommen att meddela oss via vårt forum.

Se även