tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
15
ZUGRIFFE
17269
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Hasba Hasba ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    13
    Hallo Zusammen,
    ich muss ein Programm in Java schreiben, das mir es ermöglicht die Daten aus eine Excel-Datei ausliest und sie in eine JTable ausgibt.
    bin für jede Hilfe dankbar
    Gruss
     

  2. #2
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Aus CSV in eine JTable wäre (für Fortgeschrittene/Profis) recht einfach, aus einer Excel-Tabelle könnte mehr als fummelig werden.
     

  3. #3
    Hasba Hasba ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    13
    bin aber kein Profi! kannst Du mir dann helfen!
    PS: bis jetzt habe keine Tabelle in Java estellt, es sollte so ausehen:
    2 Spalten und unendliche Zeilen.
    Danke im voraus
     

  4. #4
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Das habe ich in 10min hingezimmert. Ob Du dabei aber viel lernst, wage ich zu bezweifeln...

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    
    /*
     * Created on 21.03.2005
     */
     
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import javax.swing.JButton;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
    import java.io.*;
     
    public class CSVTest extends JFrame
    {
      private class MeinWindowListener extends WindowAdapter
      {
        public void windowClosing(WindowEvent arg0)
        {
          System.exit(0);
        }
      }
     
      private String[] columnNamen = { "Spalte 1", "Spalte 2" };
      private DefaultTableModel tableModel;
      private JButton button;
      private JComponent contentPane = (JComponent) getContentPane();
     
      CSVTest()
      {
        super("CSV Test");
        setSize(800, 600);
        initLayout();
        setLocationRelativeTo(null);
        addWindowListener(new MeinWindowListener());
        setVisible(true);
        setResizable(true);
      }
     
      void initLayout()
      {
        contentPane.setLayout(new BorderLayout());
     
        tableModel = new DefaultTableModel(null, columnNamen);
        JTable tableZahlen = new JTable(tableModel);
        tableZahlen.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
     
        JScrollPane scrollPane = new JScrollPane(tableZahlen);
        scrollPane.setPreferredSize(new Dimension(300, 300));
     
        JPanel jpTable = new JPanel();
        jpTable.add("Center", scrollPane);
        contentPane.add("West", jpTable);
     
        button = new JButton("Einlesen");
        button.addActionListener(new ActionListener()
              {
                public void actionPerformed(ActionEvent e)
                {
                  readFile();
                }
              });
     
        JPanel jpButton = new JPanel();
        jpButton.add(button);
        contentPane.add("South", jpButton);
     
      }
     
      /**
       * 
       */
      protected void readFile()
      {
        try{
          BufferedReader reader = new BufferedReader(new FileReader("C:\\Mappe1.csv"));
          
          String strLine;
          while ( (strLine = reader.readLine()) != null )
          {
            String[] items = strLine.split(";");
            tableModel.addRow(items);
          }
          tableModel.fireTableDataChanged();
        }
        catch(FileNotFoundException e) {}
        catch(IOException e) {}
      }
     
      public static void main(String[] args)
      {
     
        CSVTest frame = new CSVTest();
        frame.setLocation(150, 90);
        frame.setSize(600, 500);
        frame.setResizable(true);
        frame.setVisible(true);
      }
    }

    Mappe1.csv:

    1;Hund
    2;Katze
    3;Maus
    4;Tiger
    5;Panther
    6;Giraffe
    7;Jaguar
    8;Esel
    9;Pferd
     

  5. #5
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    Schau mal hier:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    
    /**
     * 
     */
    package de.tutorials;
     
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.Arrays;
    import java.util.Vector;
     
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.SwingUtilities;
    import javax.swing.filechooser.FileFilter;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableModel;
     
    /**
     * @author Administrator
     * 
     */
    public class CSVJTableExample extends JFrame {
     
        private JTable table;
     
        private JButton btnAction;
     
        private JFileChooser fileChooser = new JFileChooser() {
            {
                setFileFilter(new FileFilter() {
     
                    @Override
                    public boolean accept(File f) {
                        return f.getName().toLowerCase().endsWith("csv");
                    }
     
                    @Override
                    public String getDescription() {
                        return "CSV Datei (Comma Seperated Values)";
                    }
     
                });
            }
        };
     
        public CSVJTableExample() {
            super("CSVJTableExample");
            setDefaultCloseOperation(EXIT_ON_CLOSE);
     
            btnAction = new JButton("Dateiauswahl");
            btnAction.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    if (!(fileChooser.showOpenDialog(CSVJTableExample.this) == JFileChooser.APPROVE_OPTION))
                        return;
                    final File file = fileChooser.getSelectedFile();
                    if (file == null)
                        return;
     
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            TableModel model = parseCSVAndCreateTableModel(file);
                            table.setModel(model);
                        }
                    });
     
                }
            });
     
            table = new JTable();
            add(new JScrollPane(table), BorderLayout.CENTER);
            add(btnAction, BorderLayout.SOUTH);
     
            pack();
            setVisible(true);
        }
     
        private TableModel parseCSVAndCreateTableModel(File file) {
     
            Vector v = new Vector();
            BufferedReader br = null;
            try {
                br = new BufferedReader(new FileReader(file));
     
                // Überschriften stehen in erster Zeile
                String[] rowItems = br.readLine().split(";");
                Vector header = new Vector(Arrays.asList(rowItems));
                while (br.ready()) {
                    rowItems = br.readLine().split(";");
                    v.add(new Vector(Arrays.asList(rowItems)));
                }
                DefaultTableModel model = new DefaultTableModel(v, header);
                return model;
     
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
     
            return null;
        }
     
        /**
         * @param args
         */
        public static void main(String[] args) {
            new CSVJTableExample();
        }
     
    }

    Gruß Tom
     

  6. #6
    Hasba Hasba ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    13
    Danke das hilft viel! merci
     

  7. #7
    Hasba Hasba ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    13
    Hallo zusammen,
    ich habe jetzt die Daten aus einer CSV-Datei ausgelesen und wierder in eine CVS-Datei gespreichert(vorerst), diese Daten möchte ich gern sortieren z.B. nach Nachnamen, und die Werte, die zu diesem Nachnamen gehören summieren. Anschliessend das Ergebnis in eine JTable ausgebe.
    für jede Hilfe bin sehr dankbar.
     

  8. #8
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Moin,
    da wirst Du um ein eigenes TableModel nicht herumkommen.
     

  9. #9
    Hasba Hasba ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    13
    Danke aber deine Antwort hilft mir nicht! bin nur ein Anfänger und häge zurzeit an einer Aufgabe!
    trotzdem Danke.
     

  10. #10
    Hasba Hasba ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    13
    Hallo user Profi,
    ich habe mir jetzt die Daten soweit aus der CSV-Datei geholt und in eine JTable dargestellt. Die Daten sind auch sortiert(string).Nun möchte ich z.b. Spalten- und/oder Zeilenweise eine Markierung machen um die Daten mit Strg und C zu kopieren und manuell in eine ander Datei einfüge.
    Die Markierung kann bis jetzt machen mit:
    table.setSelectionForeground(Color.YELLOW);
    table.setSelectionBackground(Color.RED);
    table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

    allerdings wenn es eine grosse Datei ist ist dann umstandiger. Deshalb micht dann z.B. mit einem Doppelklick auf die Spaltebeschriftung die ganze Spalte markieren.

    für jede Hilfe bin sehr dankbar. Falls Du den Code brauchst kann ich Dir schicken.

    Danke vielmals
     

  11. #11
    maxhd2 maxhd2 ist offline Rookie
    Registriert seit
    Jun 2005
    Beiträge
    5
    ich hab da auch so meine probleme obwohl ich den code hier grossteils übernommen habe, ich will die strings in eine liste stopfen,
    derzeit schreib ich sie noch debugmässig raus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
     
                 try{
                   BufferedReader reader = new BufferedReader(new FileReader("C:\\eclipse\\workspace\\FlightBooking\\Mappe1.csv"));
                   System.out.println("hallo");
                   String strLine;
                   String[] items;
                   while ( reader.ready()) {
                     items = reader.readLine().split(";");
                     System.out.println(items);
                   }
                  
                 }
                 catch(FileNotFoundException e) {}
                 catch(IOException e) {}

    und rauskommen tut:
    hallo
    [Ljava.lang.String;@1cd2e5f

    richtiger inhalt von mappe1: bla;lol;rofl;test
     

  12. #12
    Avatar von teppi
    teppi teppi ist offline Mitglied Platin
    Registriert seit
    May 2004
    Ort
    Berlin
    Beiträge
    537
    Hi !

    String[] items;

    Items ist ein Array und somit über einen Index auszulesen.

    Bsp: System.out.println(items[0]);

    Gruß Stefan
     
    :-) möp

  13. #13
    cHucKy51 cHucKy51 ist offline Mitglied Bronze
    Registriert seit
    Mar 2007
    Beiträge
    40
    Hallo!
    Ich möchte nochmal auf die Frage von maxhd2 zurückkommen.
    Wie kann ich die Strings in eine Liste stecken, wenn ich ein eigenes TableModel habe
    und NICHT das DefaultTableModel benutze?

    Gruß
     

  14. #14
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Einfach so in ein Array oder eine Liste legen, dass sie in den TableModel-Interfacemethoden ausgelesen werden können.
     

  15. #15
    cHucKy51 cHucKy51 ist offline Mitglied Bronze
    Registriert seit
    Mar 2007
    Beiträge
    40
    Ok, habe es jetzt mit einer ArrayList gelöst!
     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 21.01.10, 08:14
  2. Antworten: 12
    Letzter Beitrag: 13.05.08, 12:16
  3. eine excel datei mit java auslesen
    Von rene2407 im Forum Java
    Antworten: 14
    Letzter Beitrag: 06.04.06, 13:23
  4. Daten aus einem HTML Kontaktformular in eine Acess DB oder Excel importieren
    Von Shiro-san im Forum Relationale Datenbanksysteme
    Antworten: 8
    Letzter Beitrag: 18.07.05, 13:50
  5. Antworten: 2
    Letzter Beitrag: 01.02.04, 22:11