Zum Hauptinhalt springen

Excel-Rechnungsvorlage in Power Automate: Aus einer SharePoint-Liste befüllen und jede Rechnung mit PDF4me als PDF/A archivieren

· 32 Minuten Lesezeit
SEO and Content Writer

PDF4me Excel - Populate ist eine Power Automate-Aktion, die eine Excel-Rechnungsvorlage mit JSON-Daten füllt. Hierbei liefert ein neues SharePoint-Listenelement die Daten, Populate schreibt sie in die intelligenten Markierungen der Vorlage, und drei weitere PDF4me-Aktionen wandeln die Arbeitsmappe in eine komprimierte PDF/A-Rechnung um, die SharePoint automatisch speichert.

Sucht man nach einer Excel-Rechnungsvorlage, findet man auf der ersten Seite eine Galerie. Microsoft, Vertex42, QuickBooks und Square bieten alle eine ansprechend gestaltete, leere Arbeitsmappe an, und bei allen endet die Suche nach dem Download. Keine der Vorlagen erklärt, wie man sie ausfüllt. In der Praxis bedeutet das, dass man die Kundendaten in die Zellen kopiert, die Datei als PDF exportiert, sie benennt und in einem Ordner ablegt, Rechnung für Rechnung. Dieser Ablauf hingegen bietet den Vorteil, dass jeder in Excel eine Vorlage erstellen kann, und eliminiert alle weiteren Schritte nach dem Download.

Der Fluss im Überblick
1. When an item is created
SharePoint-Trigger für die Liste Excel Template. Jede neue Zeile entspricht einer Rechnung.
2. Compose
Formt die flache Listenzeile in das verschachtelte RootData-JSON um, das die Vorlage erwartet.
3. Get file content using path
Liest bei jedem Durchlauf die Excel-Rechnungsvorlage aus Shared Documents.
4. Excel - Populate
PDF4me Excel. Schreibt das JSON in die intelligenten Markierungen auf Blatt 1.
5. Convert to PDF
PDF4me Convert. Rendert die ausgefüllte Arbeitsmappe als Invoice.pdf.
6. PDF - Compress
Optimize Profile Web. Wird vor Anwendung des Archivierungsstandards ausgeführt.
7. PDF - Create PdfA
Compliance PdfA2b. Der Schritt, der eine Rechnung in einen Datensatz umwandelt.
8. Create file
SharePoint schreibt ExcelArchived.pdf in /Shared Documents/ArchivedExcel.
Die Kurzfassung

Eine Zeile landet in einer SharePoint-Liste. Power Automate wandelt sie in JSON um, füllt damit eine Excel-Rechnungsvorlage, konvertiert die Arbeitsmappe in PDF, komprimiert sie, konvertiert sie in PDF/A-2b und speichert das Ergebnis in einem SharePoint-Ordner. Acht Aktionen, etwa 36 Sekunden pro Rechnung, und niemand muss Excel öffnen.

Warum-basierte Fragen und Antworten

Warum sollte man eine Excel-Arbeitsmappe als Rechnungsvorlage verwenden? Weil Rechnungen dort bereits erstellt werden. Spaltenbreiten, verbundene Zellen, Schriftarten und Rahmen sind in Excel festgelegt, sodass der Layoutverantwortliche Änderungen vornehmen kann, ohne den Workflow zu verändern oder HTML zu lernen. Die einzige Voraussetzung ist, dass jede Zelle mit einem Wert anstelle von Beispieltext eine intelligente Markierung enthält. Schritt 4 zeigt, wie diese aussieht.

Warum benötigt der Flow eine Compose Aktion? Weil eine SharePoint-Listenzeile flach ist, die Vorlage jedoch nicht. Die Liste speichert die beiden Positionen als zehn separate Spalten, Item1Description bis Item2TaxRate. Die Vorlage enthält eine Elementzeile, die sich für jeden Eintrag in einem Items Array wiederholt. Compose wandelt die zehn Spalten in ein Array mit zwei Elementen um, und dieses Array bewirkt die Wiederholung der Zeile.

Warum sollte man die Rechnung in PDF/A konvertieren, anstatt die .xlsx-Datei zu behalten? Eine Arbeitsmappe ist ein dynamisches Dokument. Jeder, der sie öffnet, kann Mengen ändern, und Formeln können auf verschiedenen Rechnern zu unterschiedlichen Gesamtsummen führen. Ein PDF korrigiert die tatsächlichen Rechnungsbeträge. PDF/A geht noch einen Schritt weiter und bettet alles ein, was zum Rendern der Seite benötigt wird, inklusive der Schriftarten. Genau das ist wichtig für ein Dokument, das in der Regel auch Jahre nach dem Versand noch lesbar sein muss.

Warum sollte die Vorlage in einer SharePoint-Bibliothek und nicht im Flow selbst gespeichert werden? Weil der Flow sie bei jeder Ausführung neu einliest. Ändern Sie das Logo, die Farben oder die Spaltenreihenfolge in SharePoint, und die nächste Rechnung verwendet das neue Layout, ohne dass der Flow bearbeitet werden muss. Der SharePoint-Versionsverlauf speichert außerdem alle früheren Kopien der Vorlage, sodass eine fehlerhafte Layoutänderung von dort aus rückgängig gemacht werden kann.


Was Sie erhalten

Eingabe: Eine SharePoint-Listenzeile mit Rechnungskopf, Kundendaten und zwei Positionen. Ausgabe: Eine komprimierte PDF/A-2b-Rechnung (ExcelArchived.pdf) im Ordner /Shared Documents/ArchivedExcel derselben Website.

SharePoint-Liste namens „Excel-Vorlage“ mit vier Rechnungszeilen: Shyam Prasad-INV, Sarah Brown-INV 01, Larry Wheels-01 und Morris-INV. Die Liste enthält Spalten für Titel, Datum und Uhrzeit, Fälligkeitsdatum, Rechnungsnummer, Zahlungsbedingungen, Firmen-E-Mail-Adresse, Firmenadresse, Kundenname, Kunden-E-Mail-Adresse, Kundenfirma, Kundenadresse, Ort/Bundesland/Postleitzahl sowie Beschreibung, Menge, Einzelpreis, Rabatt und Steuersatz für Artikel 1 und Artikel 2.

Die Datenquelle: eine Listenzeile pro Rechnung, 22 Spalten breit. Die letzte Zeile, Morris - INV, ist diejenige, die die Beispielausgabe erzeugt hat.

Die SharePoint-Dokumentenbibliothek ist im Ordner „ArchivedExcel“ geöffnet und zeigt die Datei „ExcelArchived.pdf“ an, die vor wenigen Sekunden vom Pdf4me Flow-Konto geändert wurde.

ExcelArchived.pdf befindet sich im Ordner ArchivedExcel und wurde vom Flow-Konto wenige Sekunden nach dem Hinzufügen der Zeile erstellt.


Was Sie benötigen

  • Power Automate. Power Automate öffnen. Ein Cloud-Flow mit Standardkonnektoren. Für SharePoint und die PDF4me-Konnektoren ist kein Premium-Plan erforderlich.
  • PDF4me-API-Schlüssel. Holen Sie sich Ihren API-Schlüssel. Dieser Ablauf nutzt drei PDF4me-Verbindungen: PDF4me Excel, PDF4me Convert und PDF4me PDF. Ein Schlüssel autorisiert alle drei.
  • Eine SharePoint-Website mit einer Liste, deren Spalten der Zuordnung Compose entsprechen, sowie eine Dokumentbibliothek für die Vorlage und die Ausgabe. Der erfasste Workflow verwendet die Liste Excel Template, den Ordner /Shared Documents/Excel Template für die Arbeitsmappe und /Shared Documents/ArchivedExcel für die Rechnungen.
  • Die Excel-Rechnungsvorlage. pdf4me-excel-invoice-template.xlsx. Ein Tabellenblatt, intelligente Markierungen bereits vorhanden.
  • Die Compose JSON-Datei. compose-rootdata.json. Die exakte RootData-Zuordnung aus Schritt 2, bereit zum Einfügen.
  • Die fertige Rechnung. excel-archived-invoice.pdf. PDF/A-2b, genau das, was der erfasste Lauf erzeugt hat.

Laden Sie zunächst die Beispiele hoch. Laden Sie die Vorlage in Ihre SharePoint-Bibliothek hoch, fügen Sie den JSON-Code in die Aktion Compose ein und vergleichen Sie anschließend Ihren ersten Durchlauf mit der fertigen Rechnung. Öffnen Sie die Dokumenteigenschaften; dort sollte die PDF/A-2b-Deklaration angezeigt werden. Zu wissen, wie eine korrekte Ausgabe aussieht, ist der schnellste Weg, um festzustellen, ob Ihr Durchlauf erfolgreich war.


Der Flow auf einen Blick

  1. When an item is created (SharePoint-Trigger), wird die Liste mit dem Namen Excel Template überwacht.
  2. Compose erstellt das RootData JSON aus der neuen Zeile.
  3. Get file content using path liest die Vorlage aus dem /Shared Documents/Excel Template.
  4. Excel - Populate (PDF4me Excel) fügt das JSON in Arbeitsblatt 1 ein.
  5. Convert to PDF (PDF4me Convert) erzeugt die Arbeitsmappe als Invoice.pdf.
  6. PDF - Compress (PDF4me PDF) mit Optimize Profile Web.
  7. PDF - Create PdfA (PDF4me PDF) mit Compliance PdfA2b.
  8. Create file (SharePoint) im Verzeichnis /Shared Documents/ArchivedExcel.

Vollständige Ablaufübersicht

Der Ausführungsverlauf von Power Automate zeigt acht Aktionen in dieser Reihenfolge an: Element erstellen (0,3 Sekunden), Verfassen (0 Sekunden), Dateiinhalt über Pfad abrufen (0,5 Sekunden), Excel-Daten ausfüllen (0,8 Sekunden), In PDF konvertieren (10 Sekunden), PDF komprimieren (11 Sekunden), PDF-Datei als PDFA erstellen (11 Sekunden) und Datei erstellen (2 Sekunden).

Der Lauf, der die Beispielrechnung erzeugt hat. Convert, Compress und Create PdfA dauert jeweils zehn bis elf Sekunden, alle anderen Vorgänge sind in weniger als einer Sekunde abgeschlossen, abgesehen vom zweisekündigen Schreibvorgang in SharePoint. Planen Sie etwa 36 Sekunden pro Rechnung ein.


Schritt 1: Wie kann ein Flow ausgelöst werden, wenn ein SharePoint-Listenelement erstellt wird?

Bisheriger Ablauf: noch nichts, dies ist der Auslöser.

Jede neue Zeile in der Liste entspricht einer Rechnung, der Auslöser ist also die Liste selbst.

  1. Erstellen Sie einen Automated cloud flow und wählen Sie SharePoint > When an item is created.
  2. Konfigurieren:
    • Site Address: PDF4me Sharepoints - https://ynoox1.sharepoint.com/sites/PDF4meSharepoints
    • List Name: Excel Template

SharePoint-Triggerkonfiguration

SharePoint-Trigger-Panel beim Erstellen eines Elements mit der auf „PDF4me SharePoints“ unter ynoox1.sharepoint.com/sites/PDF4meSharepoints festgelegten Websiteadresse und dem auf „Excel-Vorlage“ festgelegten Listennamen; erweiterte Parameter zeigen 0 von 1 an; Verbindung zu SharePoint hergestellt

Eine Liste, ein Auslöser. Die in der Liste integrierte Spalte Title enthält die Rechnungsnummer, weshalb im nächsten Schritt die Nummer dem Title zugeordnet wird.

Hinweis: Ausdrücke verwenden den internen Spaltennamen, nicht den in der Liste angezeigten Namen. Die Liste zeigt eine Spalte namens Date and time, der Trigger gibt sie jedoch als Dateandtime zurück. Dieser Name muss von Compose verwendet werden. Ein falscher Name führt nicht zu einem Fehler. Das ? in triggerBody()?['Dateandtime'] gibt stillschweigend null zurück, sodass die Rechnung einfach ein leeres Datum enthält.


Schritt 2: Wie wandelt man eine einfache SharePoint-Zeile in JSON für eine Excel-Vorlage um?

Bisheriger Ablauf: SharePoint-Trigger.

Die Vorlage erwartet eine verschachtelte Struktur: einen Rechnungskopf, einen Firmenblock, einen Kundenblock und eine Artikelliste. Die Listenzeile ist flach. Compose dient als Übersetzungsschicht zwischen den beiden.

  1. Data Operation > Compose.
  2. Fügen Sie dies in Inputs ein. Jeder Wert ist ein triggerBody()?['<column>']-Ausdruck, der auf eine Listenspalte verweist.
{
"RootData": {
"Invoice": [
{
"Number": "@{triggerBody()?['Title']}",
"Date": "@{triggerBody()?['Dateandtime']}",
"DueDate": "@{triggerBody()?['DueDate']}",
"PONumber": "@{triggerBody()?['PONumber']}",
"PaymentTerms": "@{triggerBody()?['PaymentTerms']}"
}
],
"Company": [
{
"Email": "@{triggerBody()?['CompanyEmail']}",
"Address": "@{triggerBody()?['CompanyAddress']}"
}
],
"Customer": [
{
"Name": "@{triggerBody()?['CustomerName']}",
"Email": "@{triggerBody()?['CustomerEmail']}",
"Company": "@{triggerBody()?['CustomerCompany']}",
"Address": "@{triggerBody()?['CustomerAddress']}",
"CityStateZIP": "@{triggerBody()?['CustomerCityStateZIP']}"
}
],
"Items": [
{
"Description": "@{triggerBody()?['Item1Description']}",
"Qty": "@{triggerBody()?['Item1Qty']}",
"UnitPrice": "@{triggerBody()?['Item1UnitPrice']}",
"Discount": "@{triggerBody()?['Item1Discount']}",
"TaxRate": "@{triggerBody()?['Item1TaxRate']}"
},
{
"Description": "@{triggerBody()?['Item2Description']}",
"Qty": "@{triggerBody()?['Item2Qty']}",
"UnitPrice": "@{triggerBody()?['Item2UnitPrice']}",
"Discount": "@{triggerBody()?['Item2Discount']}",
"TaxRate": "@{triggerBody()?['Item2TaxRate']}"
}
]
}
}

Compose: Codeansicht

Power Automate Compose-Aktion in der Codeansicht mit Eingaben RootData, die die Arrays Invoice, Company, Customer und Items enthalten, wobei jeder Wert einem TriggerBody-Ausdruck wie Title, Dateandtime, DueDate, PONumber, PaymentTerms, CompanyEmail, CustomerName und Item1Description bis Item2TaxRate zugeordnet ist.

Die Spalten Invoice, Company und Customer sind jeweils ein Element. Die Spalte Items hat zwei Elemente, eines für jede Spalte Artikel in der Liste.

Wie jede Vorlagenzelle ihren Wert erhält

VorlagenzelleIntelligenter Marker in der ZellePfad ComposeSharePoint-Spalte
Invoice No. (B12)&=RootData.Invoice.Number(noadd)Invoice[0].NumberTitle
Datum (B13)&=RootData.Invoice.Date(noadd)Invoice[0].DateDateandtime
Due Date (B14)&=RootData.Invoice.DueDate(noadd)Invoice[0].DueDateDueDate
PO Number (B15)&=RootData.Invoice.PONumber(noadd)Invoice[0].PONumberPONumber
Payment Terms (B16)&=RootData.Invoice.PaymentTerms(noadd)Invoice[0].PaymentTermsPaymentTerms
E-Mail-Adresse und Anschrift (B4, B5)&=RootData.Company.Email(noadd) and .AddressCompany[0]CompanyEmail, CompanyAddress
Customer (B6 bis B10)&=RootData.Customer.Name(noadd) und vier weitereCustomer[0]CustomerName zu CustomerCityStateZIP
Artikelzeile (A19 bis E19)&=RootData.Items.Description, .Qty, .UnitPrice, .Discount, .TaxRateItems[0] und Items[1]Spalten Item1 und Item2

Der From (B3) ist reiner Text (PDF4me) und daher auf jeder Rechnung identisch. Ersetzen Sie ihn in der Vorlage durch Ihren Firmennamen.


Schritt 3: Woher liest der Workflow die Excel-Vorlage?

Bisheriger Ablauf: SharePoint-Trigger plus Compose.

Die Vorlage ist eine gewöhnliche Datei in einer Dokumentbibliothek. Der Workflow liest sie bei jeder Ausführung ein, sodass das Layout verwendet wird, das sich zu diesem Zeitpunkt in SharePoint befindet.

  1. SharePoint hinzufügen > Get file content using path.
  2. Konfigurieren:
    • Site Address: PDF4me Sharepoints - https://ynoox1.sharepoint.com/sites/PDF4meSharepoints
    • File Path: /Shared Documents/Excel Template/PDF4me_Excel_SharePoint_Template_.xlsx
    • Infer content type (erweitert): Yes

Get file content using path: Konfiguration

SharePoint: Dateiinhalte mithilfe der Pfadaktion abrufen (Websiteadresse: PDF4me SharePoints, Dateipfad: /Shared Documents/Excel Template/PDF4me_Excel_SharePoint_Template_.xlsx, erweiterter Parameter: Inhaltstyp ableiten auf „Ja“ gesetzt), Verbindung zu SharePoint hergestellt

Die Liste und der Vorlagenordner heißen beide Excel Template. Es handelt sich um unterschiedliche Dinge: Das eine ist eine Liste, das andere ein Ordner in Shared Documents.


Schritt 4: Wie füllt die Funktion Excel - Populate eine Excel-Rechnungsvorlage aus?

Bisheriger Ablauf: SharePoint-Trigger plus Compose plus Get file content using path.

Dieser Schritt erledigt die Arbeit, die Ihnen die Vorlagengalerien überlassen. Excel - Populate nimmt die Arbeitsmappe und das JSON-Objekt, findet alle intelligenten Markierungen und schreibt den entsprechenden Wert in die jeweilige Zelle.

  1. Excel - Populate aus der PDF4me Excel Verbindung einfügen.
  2. Konfigurieren:
    • File Content: das Body Token von Get file content using path
    • JSON Data: die Ausgabe von Compose (das Token wird als Body angezeigt)
    • File Name: Populate.xlsx
    • Worksheet Indexes: 1
  3. Öffnen Sie Advanced parameters und legen Sie drei der vier Optionen fest:
    • Strict JSON Strings: Yes
    • Culture & Language Settings: en-US
    • Calculate Formulas: Yes

Excel - Populate: Konfiguration

Die PDF4me Excel-Aktion „Populate“ verwendet folgende Einstellungen: Dateiinhalt: Body-Token aus SharePoint; JSON-Daten: Body-Token aus Compose; Dateiname: Populate.xlsx; Arbeitsblattindizes: 1; Erweiterte Parameter: Strenge JSON-Zeichenfolgen: Ja; Kultur- und Spracheinstellungen: en-US; Formeln berechnen: Ja; Verbindung zu PDF4me Excel

Zwei Eingaben sind für die eigentliche Arbeit notwendig: die Vorlagenbytes von SharePoint und das JSON von Compose. Alles andere betrifft Formatierung und Gültigkeitsbereich.

Die Vorlage verwendet zwei Arten von Markern, und der Unterschied zwischen ihnen ist der ganze Clou:

  • Kopfzeilenzellen wie Invoice No. enthalten &=RootData.Invoice.Number(noadd). Der Modifikator (noadd) schreibt den Wert direkt an Ort und Stelle und fügt keine neue Zeile ein.
  • Die Elementzeile enthält &=RootData.Items.Description, &=RootData.Items.Qty usw., ohne weitere Angaben. Diese Zeile wird für jedes Element des Items-Arrays einmal geschrieben, sodass zwei Elemente zwei Zeilen erzeugen und ein drittes Element eine dritte Zeile erzeugt.

Die vollständige Grammatik, einschließlich Modifikatoren, verschachtelter Pfade und Formelverarbeitung, finden Sie in der Syntaxübersicht Excel Populate. Informationen zur Aktion Populate mit einer Dropbox-Vorlage und einer eingebetteten JSON-Nutzlast finden Sie unter Füllen einer Excel-Vorlage aus JSON in Power Automate.

Hinweis: Jeder Wert in der Compose wird als interpolierte Zeichenkette in Anführungszeichen gesetzt, sodass Mengen und Preise als Text an die Vorlage übergeben werden. Wenn Strict JSON Strings auf Yes gesetzt ist, bleiben sie Text, was korrekt gedruckt wird und für diese Vorlage völlig ausreicht. Wenn Sie eine Zeilensumme oder eine SUMME hinzufügen, setzen Sie die Option auf No, damit numerisch aussehende Zeichenketten in echte Zahlen umgewandelt werden. Andernfalls werden diese bei der SUMME-Funktion übersprungen, da Excel als Text gespeicherte Zahlen nicht addiert.


Schritt 5: Wie konvertiert man die ausgefüllte Arbeitsmappe in eine PDF-Datei?

Bisheriger Workflow: SharePoint-Trigger plus Compose plus Get file content using path plus Excel - Populate.

Die gefüllte Arbeitsmappe existiert nur innerhalb des Programmlaufs. Sie wird niemals als .xlsx-Datei gespeichert; sie wird direkt an den Konverter übergeben.

  1. Fügen Sie die Verbindung Convert to PDF von PDF4me Convert hinzu.
  2. Konfigurieren:
    • File Content: Das Token Output File Content aus Excel - Populate
    • File Name: Invoice.pdf

Convert to PDF: Konfiguration

Die PDF4me-Aktion „In PDF konvertieren“ mit dem Dateiinhalt „Ausgabedateiinhalt“ aus der Excel-Funktion „Ausfüllen“ und dem Dateinamen „Rechnung.pdf“ ist mit der PDF4me-Konvertierungsfunktion verbunden.

Output File Content ist die ausgefüllte Arbeitsmappe. Sie wird niemals als .xlsx-Datei in SharePoint gespeichert.

Hinweis: Der erfasste Workflow verwendet Invoice.pdf als File Name und die Konvertierung funktioniert trotzdem korrekt. Die Referenz Convert to PDF fragt jedoch nach der Dateiendung der Quelldatei. Daher ist Invoice.xlsx der sicherere Wert, wenn Sie Ihre eigene PDF-Datei erstellen.

Legen Sie das Seitenlayout in der Vorlage fest, nicht im Workflow. Convert to PDF übernimmt das Seitenlayout der Arbeitsmappe. Die Beispielvorlage ist etwas breiter als eine Letter Seite. Daher befinden sich die Spalten A bis D der erfassten Rechnung auf Seite eins und die Spalte Tax % nur auf Seite zwei. Öffnen Sie die Vorlage in Excel, gehen Sie zu Page Layout und wählen Sie Scale to Fit > Width die Option 1 page. Speichern Sie die Vorlage anschließend wieder in SharePoint. Jede nachfolgende Rechnung passt dann auf eine Seite.


Schritt 6: Wie komprimiert man die Rechnung und konvertiert sie in das PDF/A-Format?

Bisheriger Ablauf: Alles über Convert to PDF.

Die PDF4me PDF Verbindung führt zwei Aktionen aus: zuerst komprimieren, dann zertifizieren. Würde man diese Schritte umkehren, könnte die Komprimierung eine bereits konforme Datei überschreiben.

  1. PDF - Compress.
    • File Content: das Body Token aus Convert to PDF
    • File Name: die headers/FileName Token, das aus der vorherigen Aktion übernommen wurde
    • Optimize Profile: Web
  2. PDF - Create PdfA.
    • File Content: Der Body Token aus PDF - Compress
    • File Name: das Token headers/FileName
    • Compliance: PdfA2b
    • Allow Upgrade: Yes
    • Allow Downgrade: Yes

Compress und Create PdfA: Parameter

AktionParameterHier verwendeter WertWas es kontrolliert
PDF - CompressOptimize ProfileWebEs geht um den Kompromiss zwischen Größe und Detailgenauigkeit. Eine Rechnung mit Text und Tabellen ohne Bilder bietet wenig Potenzial für Qualitätseinbußen.
PDF - Create PdfACompliancePdfA2bISO 19005-2, Level B. Die Seite wird auch in Jahren noch auf jedem Anzeigegerät gleich dargestellt.
PDF - Create PdfAAllow UpgradeYesLässt die Aktion auf einer höheren Ebene ablaufen, wenn die angeforderte Ebene nicht erreichbar ist.
PDF - Create PdfAAllow DowngradeYesLässt es sich auf einem niedrigeren Niveau einpendeln, anstatt komplett zu scheitern.
PDF4me PDF-Komprimierungsaktion mit dem Dateiinhalt auf das Body-Token, dem Dateinamen auf das Header-Dateiname-Token und dem Optimierungsprofil „Web“, verbunden mit PDF4me PDF

Compress arbeitet mit der konvertierten Rechnung, bevor irgendetwas zertifiziert wird.

PDF4me PDF-Aktion „PDF erstellen“ mit Dateiinhalt auf Body-Token, Dateiname auf Header-Token „FileName“, Konformität: PDFA2b, Upgrade und Downgrade zulassen (Ja), verbunden mit PDF4me PDF

Create PdfA ist die letzte Aktion, die das Dokument bearbeitet, und genau dort gehört sie hin.

Das gleiche Paar erledigt die gleiche Aufgabe für Dateien, die sich bereits in SharePoint befinden, bei der PDF-Archivierung in Power Automate mit einem unbeaufsichtigten SharePoint-Ordner.


Schritt 7: Wo wird die fertige Rechnung gespeichert?

Bisheriger Ablauf: Alles über Create PdfA.

Im letzten Schritt wird die zertifizierte Rechnung wieder in dieselbe SharePoint-Site geschrieben.

  1. SharePoint hinzufügen > Create file.
  2. Konfigurieren:
    • Site Address: PDF4me Sharepoints - https://ynoox1.sharepoint.com/sites/PDF4meSharepoints
    • Folder Path: /Shared Documents/ArchivedExcel
    • File Name: ExcelArchived.pdf
    • File Content: Der Body Token aus PDF - Create PdfA

SharePoint Create file: Konfiguration

SharePoint-Aktion „Datei erstellen“ mit der Websiteadresse „PDF4me SharePoints“, dem Ordnerpfad „/Shared Documents/ArchivedExcel“, dem Dateinamen „ExcelArchived.pdf“ und dem auf den Body-Token von „PDF erstellen“ festgelegten Dateiinhalt (verbunden mit SharePoint).

Jede PDF4me-Aktion erzeugt ein Token namens Body. Die Bezeichnung allein verrät Ihnen also nicht, welche Aktion Sie ausgewählt haben. Bewegen Sie den Mauszeiger darüber oder überprüfen Sie den Code für body('PDF_-_Create_PdfA').

Ändern Sie dies, bevor Sie live gehen. ExcelArchived.pdf ist ein fester Name, sodass jedes neue Listenelement in dieselbe Datei geschrieben wird und der Ordner nie mehr als die neueste Rechnung enthält. Erstellen Sie den Namen stattdessen aus der Zeile. Die Listenelement-ID ist per Definition eindeutig, daher funktioniert concat('Invoice-', triggerBody()?['ID'], '.pdf') immer. Die Rechnungsnummer im Title funktioniert ebenfalls, solange sie keine Zeichen enthält, die SharePoint in Dateinamen ablehnt, wie z. B. Schrägstrich, Doppelpunkt, Sternchen oder Fragezeichen.


Führen Sie den Flow aus und überprüfen Sie ihn

  1. Save den Ablauf oben rechts.
  2. Fügen Sie der Liste einen neuen Eintrag mit dem Namen Excel Template hinzu und füllen Sie alle Spalten aus, die die Vorlage verwendet.
  3. Öffnen Sie den Ausführungsverlauf. Alle acht Aktionen sollten grün sein, wobei Convert, Compress und Create PdfA die meiste Zeit in Anspruch nehmen.
  4. Öffnen Sie /Shared Documents/ArchivedExcel und prüfen Sie, ob die PDF-Datei vorhanden ist und ob unter Modified By das Konto des Flows angezeigt wird.
  5. Öffnen Sie die Datei selbst und vergleichen Sie sie mit der Listezeile. Überprüfen Sie anschließend die Dokumenteigenschaften auf die PDF/A-Deklaration.

Die Rechnung aus dem erfassten Lauf ist 37.876 Byte groß. Sie enthält die Zeile Morris - INV: Kunde Morris Luma bei Invoicing.co, datiert auf den 01.09.2026 und fällig am 20.09.2026, mit zwei Positionen: PDF to Excel (Menge 60) und PDFA (Menge 45). Die XMP-Metadaten deklarieren pdfaid:part als 2 und pdfaid:conformance als B, was intern PDF/A-2b entspricht. Die Rechnung besteht aus zwei Seiten anstatt einer, da die Seiteneinrichtung in Schritt 5 erläutert wird.

Was genau haben Sie entwickelt? Eine Rechnungsverarbeitungs-Pipeline, bei der lediglich die Dateneingabe manuell erfolgt. Das Layout befindet sich in einer Excel-Datei, die jeder bearbeiten kann, die Daten liegen in einer Liste vor, und die Ausgabe ist eine in sich abgeschlossene, archivierbare PDF-Datei, die automatisch abgelegt wird. Das Konzept ist nicht an Power Automate gebunden: Es lässt sich auch auf Make, Zapier und n8n übertragen, überall dort, wo die PDF4me Excel und PDF/A verfügbar sind.


Häufige Variationen, die Sie hinzufügen können, ohne den Aufbau zu wiederholen

Senden Sie die Rechnung per E-Mail an den Kunden
Fügen Sie nach Create file Office 365 Outlook Send an email (V2) hinzu. Tragen Sie die Kunden-E-Mail-Adresse in das Feld An ein und hängen Sie den E-Mail-Text der PDF Body von PDF - Create PdfA an, damit der Kunde die archivierte PDF/A-Datei erhält.
Datumsangaben sollten so formatiert sein, wie Ihre Kunden sie lesen
Das Beispiel gibt 2026-09-01 aus, da der Trigger das Datum in diesem Format zurückgibt. Umschließen Sie die Ausdrücke für Datum und Fälligkeitsdatum in Compose mit formatDateTime und einem Muster wie dd MMM yyyy.
Addieren Sie die Zeilensummen und erhalten Sie die Gesamtsumme
Fügen Sie die Formeln in die Vorlage ein, setzen Sie Strict JSON Strings auf Nein, damit Mengen und Preise als Zahlen ankommen, und lassen Sie Calculate Formulas auf Ja, damit die Summen bereits vor der Umrechnung berechnet sind.
Überprüfen Sie den Standard, anstatt ihn anzunehmen
Fügen Sie nach Create PdfA Validate PDFA hinzu und verzweigen Sie entsprechend dem Ergebnis. Eine fehlgeschlagene Konvertierung wird dann im Ausführungsverlauf anstatt im Protokoll angezeigt.

Wie sich dies im Vergleich zu anderen Methoden der Rechnungserstellung verhält

Jede Zeile beschreibt die Alternative. Die letzte Zeile stellt diesen Ablauf dar.

VergleichWer kann das Layout ändern?Wie die Vorlage ausgefüllt wirdArchivformat
Manuell ausgefüllte Excel-Vorlage im Vergleich zu diesem AblaufJeder, der Excel verwendetKopieren und Einfügen, eine Rechnung nach der anderenEs handelt sich um eine einfache PDF-Datei, sofern nicht die Exportoption PDF/A ausgewählt ist
Excel VBA-Makro im Vergleich zu diesem AblaufWer auch immer das Makro aufrechterhältAutomatisch, auf einem Desktop-PC mit geöffneter ArbeitsmappeEinfaches PDF, es sei denn, der Export ist für PDF/A eingerichtet
HTML-Vorlage plus HTML in PDF Convert vs. dieser AblaufJemand, der sich mit HTML und CSS auskenntAutomatisch, in der CloudPDF
Dieser FlussJeder, der Excel verwendetAutomatisch, bei jedem neuen ListeneintragPDF/A-2b

Der entscheidende Unterschied: Die ersten beiden Varianten behalten das Layout in Excel bei, binden aber weiterhin eine Person in den Prozess ein, während die dritte Variante die Person entfernt, das Layout aber in den Code verlagert. Nur dieser Ablauf vereint beides.


Häufig gestellte Fragen

Gibt es eine Rechnungsvorlage in Excel?

Ja. Excel enthält Rechnungsvorlagen: In der Desktop-App wählen Sie File > New und suchen nach Rechnung. Weitere Vorlagen finden Sie in der Online-Vorlagengalerie von Microsoft. Diese Vorlagen sind für die manuelle Bearbeitung vorgesehen.

Die in diesem Beitrag verwendete Vorlage ist für einen anderen Zweck konzipiert. Ihre Wertzellen enthalten intelligente Markierungen anstelle von Beispieltext, sodass sie von einem Workflow ausgefüllt werden können. Sie können jede beliebige Rechnungsvorlage auf dieselbe Weise konvertieren: Behalten Sie das Design bei und ersetzen Sie jeden Wert durch eine Markierung wie z. B. &=RootData.Invoice.Number(noadd).

Wie erstellt man eine Rechnung aus Excel-Daten?

Die Daten werden in Zeilen angeordnet, das Layout in einer Vorlage gespeichert, und die Zusammenführung erfolgt automatisch. In Excel selbst ist das beispielsweise ein Word-Serienbrief oder ein VBA-Makro, die beide auf dem Rechner eines Benutzers ausgeführt werden.

In diesem Ablauf befinden sich die Zeilen in einer SharePoint-Liste. Compose wandelt eine Zeile in JSON um, und Excel - Populate fügt sie in die Vorlage ein. Wenn Ihre Daten bereits als Excel-Tabelle in OneDrive oder SharePoint vorliegen, kann die Aktion List rows present in a table des Excel Online (Business)-Connectors dieselbe Compose innerhalb einer Apply to each-Schleife verwenden, wobei items('Apply_to_each') anstelle von triggerBody() verwendet wird. Alles ab Schritt 3 bleibt unverändert.

Wie kann man Rechnungen in Excel automatisieren?

Die Automatisierung einer Rechnung bedeutet, dass jeder einzelne Arbeitsschritt entfällt: Eingabe der Werte, Export als PDF, Benennung der Datei und Ablage. Die Vorlage selbst bleibt eine normale Excel-Datei.

Dieser Workflow entfernt alle vier Eingaben. Die Listenzeile ist die einzige Eingabe. Die Vorlage wird mit Excel - Populate befüllt, mit Convert to PDF exportiert, mit PDF - Create PdfA archiviert und mit Create file abgelegt. Sobald der Dateiname aus der Zeile generiert wurde (siehe Schritt 7), sind keine manuellen Schritte mehr erforderlich.

Kann Power Automate Excel-Tabellen in PDF konvertieren?

Ja. In einem Cloud-Flow wandelt die Aktion Convert file des OneDrive for Business Connectors eine .xlsx-Datei in eine PDF-Datei um, jedoch nur für Dateien, die in OneDrive gespeichert sind. Daher kopieren SharePoint-Flows die Arbeitsmappe oft zuerst dorthin und löschen sie anschließend.

PDF4me Convert to PDF übernimmt den Dateiinhalt direkt aus vorherigen Aktionen. Daher wird die befüllte Arbeitsmappe in diesem Workflow nirgendwo gespeichert: Sie wird direkt von Excel - Populate, und die einzige Datei, die in SharePoint landet, ist die fertige PDF/A-Rechnung.


Fehlerbehebung

Ein Feld auf der Rechnung bleibt leer

Überprüfen Sie den Spaltennamen im Compose Ausdruck. Er muss dem internen Namen Dateandtime entsprechen und darf nicht Date and time lauten. Das Fragezeichen in triggerBody()?['Dateandtime'] bewirkt, dass ein falscher Name zu null anstatt zu einem Fehler führt. Dadurch bleibt der Lauf erfolgreich und die Zelle leer. Ist der Name korrekt, überprüfen Sie den JSON-Pfad anhand der Markierung: RootData, dann Customer, dann Name (in beiden Fällen identisch geschrieben).

Die Rechnung umfasst zwei Seiten, wobei die zweite Seite eine Spalte hat

Die Vorlage ist breiter als eine gedruckte Seite. Convert to PDF erfolgt gemäß der Seitenstruktur der Arbeitsmappe. Passen Sie dies dort an: Page Layout > Scale to Fit > Breite: 1 page. Speichern Sie die Vorlage anschließend wieder in SharePoint. Beim nächsten Durchlauf wird sie dann auf eine Seite genau angepasst.

Im ArchivedExcel befindet sich immer nur eine einzige Rechnungsdatei

Der File Name Create file ist der feste Text ExcelArchived.pdf, sodass bei jedem Durchlauf derselbe Name verwendet wird. Wie in Schritt 7 beschrieben, sollte der Dateiname pro Zeile anhand der Listenelement-ID eindeutig sein.

Die PDF-Datei lässt sich zwar öffnen, ist aber nicht im PDF/A-Format

Create file liest aus PDF - Compress oder Convert to PDF anstatt aus PDF - Create PdfA. Alle drei Tokens sind mit Body gekennzeichnet, daher ist der Fehler leicht zu machen, und im Ausführungsverlauf ist nichts Auffälliges zu erkennen. Stellen Sie sicher, dass der Ausdruck body('PDF_-_Create_PdfA') lautet.


Nächste Schritte

Das gleiche achtstufige Muster (Zeilen auflisten, in JSON umwandeln, Vorlage abrufen, Daten einfügen, konvertieren, komprimieren, zertifizieren, speichern) verarbeitet jedes Dokument, das als Tabellenkalkulation beginnt: Angebote, Lieferscheine, Kontoauszüge und Zertifikate.