Excel Tabelle lesen und in neue Excel Tabelle einfügen

Genkin

Aktives Mitglied
Hallo, hätte zunächst eine allgemeine Frage.
Ist es möglich, in Java eine Excel einzulesen, bestimmte Zellen zu kopieren und in eine neue Excel Tabelle zu übertragen? Die neue Excel Tabelle soll immer den selben Aufbau haben und quasi am Besten als Vorlage in dem Programm integriert sein bzw. erstellt werden.

Würde gerne eine einfache GUI erstellen mit zwei Funktionen.

In der Ersten Funktion soll der Dateipfad der zu lesende Excel Tabelle ausgewählt und anschließend die benötigten Zellen eingelesen werden.

In der zweiten Funktion sollen dann die eingelesenen Werte quasi in die vorhandene Excel in die jeweils richtigen Zellen übertragen und gleichzeitig exportiert werden.

Wenn das geht, wie sähe da die Umsetzung aus? Wie lese ich ein bzw. wie erstelle ich die Tabelle mit den benötigten Werten?

Es geht um verschiedene Abteilungsbereiche in denen Abwesenheiten erfasst werden. Auch sollen die Abwesenheiten in Stunden gerechnet werden. Und das alles für das ganze Jahr.

Hoffe ihr habt alles verstanden, wenn nicht, einfach nachfragen.

Ich bedanke mich im Voraus.
 

White_Fox

Top Contributor
Das geht in Java zwar (es gibt da eine Apache-Bibliothek, und Libre Office ist ja auch in Java geschrieben), hab das aber auch noch nie gemacht.

Was ich dagegen schön öfter gemacht habe: Ein Skript in VBA zu schreiben (MS Office-Skriptsprache). Die Aufgabe schreit eigentlich geradezu nach einem solchen Skript.
 

Genkin

Aktives Mitglied
Danke erstmal für die rasche Antwort.

Ich kann mir darunter leider nichts vorstellen, habe null Erfahrung was VBA betrifft. Wie sähe da der Code aus? Oder meinst Du, ich soll das in Excel selber machen, für jede Zelle Befehle eingeben bzw. verknüpfen?
 

White_Fox

Top Contributor
Schau mal in deiner Bearbeitungsleiste oben, ob du da etwas mit Entwicklertools findest. Wenn nicht, guckste hier:

In Excel (und Word, Powerpoint, Access, ...) kannst du recht ausgewachsene Programme schreiben und dir sogar Benutzeroberflächen dazu zusammenklicken.
Ich persönlich mag die Sprache VBA nicht besonders, aber sie ist sehr einfach und hat doch ein paar unschlagbare Vorteile.

Hier ein Beispiel (das kannst du 1:1 in den VBA-Editor kopieren und ausführen, gründer Pfeil oben)
Code:
Option Explicit

Public Sub Dateipfad()
    Dim s As String
    
    s = "C:\" 'Hier einen Standardpfad eintraagen
    
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .InitialFileName = s
        .Title = "Bitte Datei auswählen..."
        If .Show = -1 Then
            MsgBox ("Pfad der ausgewählten Datei: " & .SelectedItems(1))
        Else
            Exit Sub
        End If
    End With
End Sub
 

Genkin

Aktives Mitglied
Schau mal in deiner Bearbeitungsleiste oben, ob du da etwas mit Entwicklertools findest. Wenn nicht, guckste hier:

In Excel (und Word, Powerpoint, Access, ...) kannst du recht ausgewachsene Programme schreiben und dir sogar Benutzeroberflächen dazu zusammenklicken.
Ich persönlich mag die Sprache VBA nicht besonders, aber sie ist sehr einfach und hat doch ein paar unschlagbare Vorteile.

Hier ein Beispiel (das kannst du 1:1 in den VBA-Editor kopieren und ausführen, gründer Pfeil oben)
Code:
Option Explicit

Public Sub Dateipfad()
    Dim s As String
   
    s = "C:\" 'Hier einen Standardpfad eintraagen
   
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .InitialFileName = s
        .Title = "Bitte Datei auswählen..."
        If .Show = -1 Then
            MsgBox ("Pfad der ausgewählten Datei: " & .SelectedItems(1))
        Else
            Exit Sub
        End If
    End With
End Sub


Dankeschön. Ich denke, es wird dann doch kein Java. Werde mich wohl in VBA reinhängen müssen, egal, schadet nicht.

Kannst Du mir sagen, wie ich Inhalte aus einer anderen Excel in die End-Tabelle (neue Excel-Datei?) übertragen kann?

Und wenn dieser Script fertig gestellt ist, läuft der Code beim öffnen der Excel automatisch, oder muss man per Hand nochmal „compilieren“ bzw. auf den grünen Pfeil?

Das alles soll möglichst automatisiert und im Hintergrund ablaufen.
 

White_Fox

Top Contributor
Dankeschön. Ich denke, es wird dann doch kein Java. Werde mich wohl in VBA reinhängen müssen, egal, schadet nicht.
Nun, Java muß nicht unbedingt verkehrt sein. Es kommt halt auf sehr viele Dinge an: Von welcher Wissensbasis gehst du aus (schüttelst du größere Java-Programme aus dem Ärmel oder wäre Java auch eher neu), brauchst du einen Dämon, Dateiexporte, ...

Ich habe mir VBA vollständig selber beigebracht (bzw. mir mein Wissen dazu ergoogelt), habe allerdings davor schon eine Handvoll Programmiersprachen benutzt.

Und wenn dieser Script fertig gestellt ist, läuft der Code beim öffnen der Excel automatisch, oder muss man per Hand nochmal „compilieren“ bzw. auf den grünen Pfeil?

Naja, du mußt das Programm schon irgendwie "auslösen", das macht der grüne Pfeil. Kompilieren als solches mußt du nichts, VBA ist eine Interpretersprache.

Um ein Makro zu starten gibt es verschiedene Möglichkeiten: Beim Öffnen, speichern, schließen, ... einer Exceldatei, durch Aufruf aus einem anderen Makro, Du kannst auch Buttons zum Draufklicken in der Excel-Datei platzieren.

Kannst Du mir sagen, wie ich Inhalte aus einer anderen Excel in die End-Tabelle (neue Excel-Datei?) übertragen kann?
Ich strick mal rasch was zusammen, dauert aber einen Moment...
 
K

kneitzel

Gast
Also wenn es im Hintergrund laufen soll, dann wäre eine VBA Lösung aus meiner Sicht weniger gut.

Und Excel Dateien lesen / schreiben ist in Java kein Thema. Der Hinweis auf die Apache POI Library ist ja schon gekommen.
Wie eine Excel Datei prinzipiell gelesen und geschrieben wird findet sich z.B. unter https://www.mkyong.com/java/apache-poi-reading-and-writing-excel-file-in-java/

Aber viele Wege führen zum Ziel und Du musst Dir überlegen, welcher Weg für Dich der Richtige ist.
 

White_Fox

Top Contributor
Hier ist noch ein kleines Beispielmakro:

Code:
Option Explicit

Public Sub exceldemo()
    Dim i As Integer
    Dim wb As Workbook

    With ThisWorkbook.Worksheets(1)
        'Tabelle zeichnen
        With .Range("A1:B4")
            With .Borders(xlInside)
                .LineStyle = xlContinuous
            End With
        End With
        With .Range("A1:C1")
            With .Borders(xlEdgeBottom)
                .LineStyle = xlContinuous
            End With
        End With
        
        'Spaltenköpfe
        With .Range("A1")
            .Value = "Spalte 1"
            .Font.Bold = True
        End With
        With .Range("B1")
            .Value = "Spalte 1"
            .Font.Italic = True
        End With
        With .Range("C1")
            .Value = "Spalte 1"
            .Font.Bold = True
            .Font.Italic = True
        End With
        
        'Zeilen schreiben
        i = 2
        Do While i <= 4
            .Range("A" & i).Value = "Zeile " & i - 1
            .Range("B" & i).Value = "Zeile " & i - 1
            .Range("C" & i).Value = "Zeile " & i - 1
            i = i + 1
        Loop
        
        'Neue Exceldatei öffnen
        Set wb = Workbooks.Add
        
        'Den Zellbereich mit der Tabelle kopieren
        .Range("A1:C4").Copy
        wb.Worksheets(1).Range("F10:H13").Insert
    End With
End Sub

Wenn du dich fragst, wie du da selber drauf kommst: Es gibt zwei ganz wesentliche Quellen dafür.
1. Der Makroeditor von MS Office.
Laß diesen einfach mal laufen, und ändere z.B. die Hintergrundfarbe einer Zelle. Dazu gleich noch eine Warnung: Ich habe in meinem Makro oben immer alles direkt addressiert, der Ausdruck ThisWorkbook.Worksheets(1).Range("A1") sollte eigentlich selbsterklärend sein.

Der Makrorecorder arbeitet aber mit dem Selection-Objekt, d.h. ich schreibe ThisWorkbook.Worksheets(1).Range("A1").value = 42, der Makrorecorder würde schreiben Selection.value = 42

Ich würde dir raten, ebenfalls die direkte Addressierung zu benutzen. Es ist einerseits umständlicher, immer erst etwas im Makro zu selektieren, andererseits kann es beim Debuggen auch umständlich werden herauszufinden, was sich jetzt hinter Selection verbirgt.

2. Nutze Google
Du findest zu VBA massenhaft Foreneinträge, auch auf Deutsch.
 

Genkin

Aktives Mitglied
Ich danke dir vielmals für deine Mühe, dass bringt mich schonmal näher. Ich werde mich noch einlesen, habe allerdings an meiner Praktikumsstelle noch keinen Internetzugang am Rechner.

Das wird übrigens alles im Rahmen meines Pflichtpraktikums für die Uni gemacht. Habe deshalb auch kein Eclipse bzw. eine andere Entwicklerumgebung für Java drauf.

Ich weiß noch nicht, ob Java oder nur VBA. Am Jahresende sollen aus mehreren Tabelle Werte entnommen und in einem Jahresabschluss zusammengefasst werden.

Kannst Du mir bitte noch eine Sache beantworten? Undzwar seien die beiden Excel-Dateien im selben Pfad (separate Dateien) hinterlegt.
Wie kann ich nun aus Excel_Nr1 aus Zelle A1 (hat den Inhalt 1) den Inhalt nach z.B. D3 in Excel_Nr2 kopieren?
 

White_Fox

Top Contributor
Habe deshalb auch kein Eclipse bzw. eine andere Entwicklerumgebung für Java drauf.
Das ist halt einer der Vorteile von VBA: Du brauchst nur Excel, das gibt es in den meisten Firmen.
Aber kneitzel muß ich da auch zustimmen: Wenn du einen Dämon brauchst (Programm, das die ganze Zeit im Hintergrund vor sich hindümpelt und auf irgendein Ereignis wartet) ist VBA eine weniger gute Idee und Java dann doch wieder besser. Deswegen überleg dir genau, wie du das aufziehen willst.

Wie kann ich nun aus Excel_Nr1 aus Zelle A1 (hat den Inhalt 1) den Inhalt nach z.B. D3 in Excel_Nr2 kopieren?
Schau dir mal den letzten Code, den ich gepostet habe, ganz in Ruhe an. Vor allem die letzten Zeilen.
 

Genkin

Aktives Mitglied
Schau dir mal den letzten Code, den ich gepostet habe, ganz in Ruhe an. Vor allem die letzten Zeilen.

Da öffnest Du eine neue Tabelle und kopierst die Zellen in die Neue. Aber wird die Tabelle da nicht neu erzeugt? Wenn ich eine bereits vorhandene öffnen will, dann muss ich doch auch irgendwo den Pfad hinterlegen und dann sagen, dass genau die Datei geöffnet werden soll. Oder denk ich grad in die falsche Richtung was deinen Code angeht?
 

White_Fox

Top Contributor
Nö..die neue Tabelle wird vorher erzeugt mit Workbooks.add. In der Objektvariable wb ist ein Workbook drin, ob du das jetzt neu erzeugt hast oder irgendwo geöffnet hast, ist egal.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Aus Excel Tabelle lesen und Werte in Array speichern Allgemeine Java-Themen 15
C Zeilen-"Vektor" aus Excel-Tabelle suchen Allgemeine Java-Themen 0
Todesbote Zeilen aus Excel in andere Excel Tabelle kopieren Allgemeine Java-Themen 0
T Mit Apache Poi Daten aus einer Excel Tabelle kopieren und in Word einfügen Allgemeine Java-Themen 1
R Datum in Excel Tabelle eintragen Allgemeine Java-Themen 6
P java tabelle auslesen - xls (excel) fehler Allgemeine Java-Themen 5
A Excel Tabelle in JFrame darstellen Allgemeine Java-Themen 6
M Rein informativ - Daten aus Excel-Tabelle in Java-Programm importieren Allgemeine Java-Themen 3
S Excel Tabelle Allgemeine Java-Themen 8
M Daten in Excel Tabelle schreiben? Allgemeine Java-Themen 7
OnDemand Excel lesen wie CSV Allgemeine Java-Themen 7
M Excel Datei Erstellen Allgemeine Java-Themen 2
I HTML / XHTML Seite nach Excel exportieren. Suche Lib Allgemeine Java-Themen 12
O Wie kann ich in Apache POI (Excel Dateien schreiben) Datumszellen in Excel erzeugen Allgemeine Java-Themen 6
N Apache POI/ neue Reihe in Excel mit einem Button Allgemeine Java-Themen 2
D ODS.Datei öffnet leider in Excel Allgemeine Java-Themen 3
L JavaFX JavaFX Chart in Apache Poi Excel Datei Allgemeine Java-Themen 2
G Excel File öffnen, in Zelle schreiben, abspeichern Allgemeine Java-Themen 6
G Excel Datum richtig auf der Konsole ausgeben Allgemeine Java-Themen 1
Trèfle Excel-Datei nicht speicherbar, da von Java zum Bearbeiten gesperrt. Allgemeine Java-Themen 3
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
C Aus MEHREREN Excel Tabellen bestimmte Zelle addieren Allgemeine Java-Themen 1
offi Excel mit Inhalten aus DB öffnen ohne zu speichern Allgemeine Java-Themen 8
R EXCEL Range und HSSF POI CellRangeAddress Allgemeine Java-Themen 1
J Apache POI Excel- Blattschutz aufheben Allgemeine Java-Themen 2
ms_cikar Java Excel bearbeiten spalten werden überschrieben. Allgemeine Java-Themen 4
T Geschlossen: Apache POI - Excel einlesen Allgemeine Java-Themen 0
U Java Excel export Allgemeine Java-Themen 1
M Excel Formel in Java Allgemeine Java-Themen 7
D Mit Hilfe von Java aus Excel-Sheet Zellen in neues Excel Dokument kopieren Allgemeine Java-Themen 3
A In Excel-Datei schreiben, Formeln der Mappe anwenden, Wert lesen Allgemeine Java-Themen 3
T Java Excel Drop Down Formularsteuerelement Allgemeine Java-Themen 0
C Benutzereingabe von EXCEL-Funktionen parsen Allgemeine Java-Themen 4
T Excel - mit jxf sprachabhängige Formeln schreiben Allgemeine Java-Themen 2
H Excel Datei einlesen mit Apache POI Allgemeine Java-Themen 1
J Ausgabe nach Excel Allgemeine Java-Themen 1
Todesbote Excel Zellen umranden Allgemeine Java-Themen 1
Todesbote Excel Blattschutz aufheben und Daten einfügen Allgemeine Java-Themen 3
G Langtexte - Cellformat import in Excel Allgemeine Java-Themen 3
R Variablen per HSSF geheime Werte von JAVA an EXCEL Allgemeine Java-Themen 2
J excel einbinden Allgemeine Java-Themen 2
M Threads Excel files bearbeiten Allgemeine Java-Themen 4
S Java & Excel Allgemeine Java-Themen 4
C Java Excel Button Allgemeine Java-Themen 2
M Bilder aus Excel auslesen Allgemeine Java-Themen 6
A Excel nach bestimmten Inhalt durchsuchen Allgemeine Java-Themen 8
P Absatz im String / Excel / /n geht nicht Allgemeine Java-Themen 2
H Excel Ausdrucken per Knopfdruck Allgemeine Java-Themen 6
P Excel-Sheets erzeugen aus Report Allgemeine Java-Themen 2
E Excel Datei weiter verarbeiten Allgemeine Java-Themen 4
M POI Excel Cell copie Allgemeine Java-Themen 4
J Zeilenumbruch - Excel Export HSSF Allgemeine Java-Themen 10
C Strings in Excel einlesen! Allgemeine Java-Themen 2
G Input/Output Apache POI Excel Allgemeine Java-Themen 5
N POI Passwortgeschützte Excel-Datei bearbeiten Allgemeine Java-Themen 3
D Java Excel API - Schreiben in Excel lässt sich nicht über Makro starten Allgemeine Java-Themen 18
M POI Excel Problem mit akt. der Summenfelder aus Vorlage Allgemeine Java-Themen 4
T DLL in Java einbinden (Quelltext aus Excel VBA) Allgemeine Java-Themen 5
S Excel -> Webseiten Formular -> Excel Allgemeine Java-Themen 5
H excel einlesen und in db schreiben Allgemeine Java-Themen 2
V Apache POI Excel Datum auslesen Allgemeine Java-Themen 6
V Apache POI Excel Sheet auslesen Allgemeine Java-Themen 5
C Datum in Excel auslesen Allgemeine Java-Themen 13
B Excel Datei in einem Java Programm mit GUI darstellen Allgemeine Java-Themen 9
G Excel Menüsteuerung ansprechen Allgemeine Java-Themen 3
M Poi-Excel: vorhandene Formatierung verwenden Allgemeine Java-Themen 2
T OLE-Automation mit Excel (Wert übergabe) Allgemeine Java-Themen 1
T Jakarta Objekt (Excel Sheet) in Swing/SWT einbetten Allgemeine Java-Themen 3
H POI Excel lesen und schreiben Allgemeine Java-Themen 10
T Apache POI Export EXCEL - [Zahlen-Werte] Allgemeine Java-Themen 1
S Excel in mySQL importieren Allgemeine Java-Themen 3
B JEE Excel Kalkulation Allgemeine Java-Themen 5
J Java-Neuling und Excel - autsch! Allgemeine Java-Themen 16
G Excel-Daten in Datenbank speichern - Problem mit leeren Feldern Allgemeine Java-Themen 7
mh Excel mit POI auslesen Allgemeine Java-Themen 5
S Passwort geschützte Excel Datei öffnen (POI) Allgemeine Java-Themen 4
S Java Excel bestimmte Zellen auslesen (POI HSSF) Allgemeine Java-Themen 11
J Mit POI Zeile in Excel löschen Allgemeine Java-Themen 5
Y Excel datei einlesen und inhalt verarbeiten Allgemeine Java-Themen 8
M Formattierung von Excel Spalten mit jxl Allgemeine Java-Themen 4
G Daten von Excel kopieren - sinnvolle Datenstruktur? Allgemeine Java-Themen 3
A CSV-Datei (Spalt A -> Excel) in Array packen und auslesen Allgemeine Java-Themen 25
G Excel Werte / Zellen formatieren Allgemeine Java-Themen 5
F Formatieren von Zellen in Excel mit Java POI Allgemeine Java-Themen 5
R Excel Export Allgemeine Java-Themen 5
A Excel-Datei öffnen Allgemeine Java-Themen 9
T JCom Beispeil mit Excel Allgemeine Java-Themen 4
S Daten extrahieren aus Excel Dateien (auch 2k7) Allgemeine Java-Themen 4
MQue Excel bzw. *.csv-Datei lesen Allgemeine Java-Themen 12
M JAVA und Excel Allgemeine Java-Themen 8
R Excel auslesen Allgemeine Java-Themen 4
G Java POI HSSF Excel Datei Gruppierung und Gliederung Allgemeine Java-Themen 2
S Anzahl der Stunden in Excel Datei schreiben Allgemeine Java-Themen 2
S In excel Datei schreiben Allgemeine Java-Themen 1
V (Excel-) Datei geöffnet? Allgemeine Java-Themen 4
M Excel Massaker Allgemeine Java-Themen 3
G mit Apache-Jakarta-POI auch Graphiken aus Excel einlesen? Allgemeine Java-Themen 3
T Wieso erfolgt keine Ausgabe. /Excel Allgemeine Java-Themen 19
F Xml-datei zu Excel exportieren Allgemeine Java-Themen 5
ARadauer Excel Datei in Excel aus Java heraus öffnen Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben