Extrahieren von Tabellen aus pdf-Datei (excel), pref. w/ vba

Ich versuche zum extrahieren von Tabellen aus pdf-Dateien mit vba und exportieren Sie Sie in excel. Wenn alles klappt wie es sollte, es sollte alles automatisch. Das problem ist, dass die Tabelle nicht standardisiert sind.

Dies ist, was ich habe, so weit.

  1. VBA (Excel) läuft XPDF, und konvertiert alle .pdf-Dateien im aktuellen Ordner eine text-Datei.
  2. VBA (Excel) liest jeden text-Datei Zeile für Zeile.

Und den code:

With New Scripting.FileSystemObject
With .OpenTextFile(strFileName, 1, False, 0)

    If Not .AtEndOfStream Then .SkipLine
    Do Until .AtEndOfStream
        //do something
    Loop
End With
End With

Diesem funktioniert alles Super. Aber jetzt bin ich immer auf das Problem der Extraktion von Tabellen aus Textdateien.
Was ich versuche zu tun, ist VBA finden Sie einen string z.B. "Year' s Income", und dann die Ausgabe der Daten, nachdem Sie in Spalten. (Bis die Tabelle endet.)

Der erste Teil ist nicht sehr schwierig (finden Sie eine bestimmte Zeichenfolge), aber wie würde ich mich über den zweiten Teil. Die text-Datei sieht wie dieses Pastebin. Das problem ist, dass der text nicht standardisiert. So zum Beispiel einige Tabellen haben 3-Jahres-Spalten (2010 2011 2012) und manche nur zwei (oder 1), einige Tabellen haben mehrere Leerzeichen zwischen die verändert sich, und einige nicht bestimmte Zeilen (z.B. Anlagevermögen, Netto).

Dachte ich an sowas aber nicht sicher, wie man es in VBA.

  1. Finden Benutzer-definierten string. zB. "Tabelle 1: Jahre' Zurück."
  2. ein. Nächsten Zeile finden Jahren; wenn es zwei, wir brauchen drei Spalten in der Ausgabe (Titel +, 2x Jahr), wenn es drei, die wir benötigen vier (Titel +, 3x im Jahr).. usw.

    b. Erstellen Sie Titel-Spalte + Spalte für jedes Jahr.
  3. Bei erreichen das Ende der Zeile, gehen Sie zur nächsten Zeile
  4. ein. Text Lesen -> output-Spalte 1.

    b. Erkennen Leerzeichen (Leerzeichen > 3?) als Anfang der Spalte 2. Zahlen Lesen -> Ausgabe in Spalte 2.

    c. (wenn Spalte = 3) Erkennen von Leerzeichen als Beginn der Spalte 3. Zahlen Lesen -> Ausgabe in Spalte 3.

    d.... (wenn Spalte = 4) zu Erkennen, Leerzeichen als Beginn der Spalte 4. Zahlen Lesen -> Ausgabe-Spalte 4.
  5. Jeder Zeile an, loop 4.
  6. Nächste Zeile enthält keine zahlen - End-Tabelle. (wahrscheinlich die easiet nur ein Benutzer definiert Anzahl, nach 15 Zeichen keine Zahl? Ende der Tabelle)

Ich basierte meine erste version auf Pdf zu excel, aber online Lesen die Leute nicht empfehlen OpenFile sondern FileSystemObject (obwohl es scheint eine Menge langsamer).

Irgendwelche Hinweise zu bekommen, begann mich, vor allem bei Schritt 2?

Wenn Sie möchten, das hinzufügen von Ressourcen oder einige details in der Frage kann man später Bearbeiten Sie die Frage und hängen Sie an die Frage.
Danke, aber ich durfte nicht mehr als 2 links. Vielen Dank für die änderungen!
Beispieltext erhalten aus der PDF-Datei sehr hilfreich!!!
Ich bezweifle, dass können Sie in der Regel parse-Tabellen basierend auf lediglich den text extrahieren. Sie mehr wahrscheinlich müssen einige Bibliotheken, die extrahiert text mit der Positionierung Informationen. Ihr Algorithmus sehr wahrscheinlich scheitern wird, im Falle von Tabellen mit einigen leeren Einträge und PDF-Dateien erstellt, die von einigen PDF-Erstellung Software.

InformationsquelleAutor MeRuud | 2013-02-23

Schreibe einen Kommentar