Hallo zusammen,
ich hab ein problem ,dass mit mehreren problemen zusammen hängt. somit einen kurze erklärung:
Daten aus einer excel spalte auslesen (erledigt)
Daten vergleichen und bei übereinstimmung eine summe bilden und aufaddieren (erledigt)
die so gewonnen statisik ausgegen (erledigt)
so jetzt kern der frage:
die ausgelesenen daten sollen jetzt noch sortiert werden. und dazu habe ich schon ein programm geschrieben, aber irgendwie hab ich mich da irgendwie total verzettelt und vorher eben gerade auch den überblick verloren weil ich molch es nicht OO programmiert habe. naja evtl wirft mal einer nen blick drüber oder gibt mir nen besseren lösungsvorschlag. bzw sagt mir wie er/sie es machen würde
ich hab ein problem ,dass mit mehreren problemen zusammen hängt. somit einen kurze erklärung:
Daten aus einer excel spalte auslesen (erledigt)
Daten vergleichen und bei übereinstimmung eine summe bilden und aufaddieren (erledigt)
die so gewonnen statisik ausgegen (erledigt)
so jetzt kern der frage:
die ausgelesenen daten sollen jetzt noch sortiert werden. und dazu habe ich schon ein programm geschrieben, aber irgendwie hab ich mich da irgendwie total verzettelt und vorher eben gerade auch den überblick verloren weil ich molch es nicht OO programmiert habe. naja evtl wirft mal einer nen blick drüber oder gibt mir nen besseren lösungsvorschlag. bzw sagt mir wie er/sie es machen würde
Code:
import java.io.File;
import java.io.IOException;
import java.util.Vector;
import java.util.Date;
import jxl.*;
import jxl.write.*;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import java.io.*;
import java.lang.*;
import jxl.write.Number;
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;
public class ExcelTest
{
// Initialisieren der globalen Variablen
public String path = "//ar203fi2/home/benjamin.assbeck/java/test/namen.xls";
public Workbook workbook = null;
public Vector<NameCounter> nameVector = new Vector<NameCounter>();
//private Vector <NameCounter> nameVector = new Vector();
/**
* Programm starten.
*/
public void start()
{
// Abfangen der Exceptions
try
{
// Einlesen der Datei
this.workbook = Workbook.getWorkbook(new File("//homedir/******/myfile.xls"));
}
catch (BiffException e)
{
System.out.println("BiffException" + e.getMessage());
}
catch (IOException e)
{
System.out.println("IOException" + e.getMessage());
}
// Tabelle initialisieren
Sheet sheet = this.workbook.getSheet(0);
// Erstellen der Zellenobjekte
String cellText;
NameCounter nameCounter;
// Die zu durchsuchende Spalte und Startzeile initialisieren
int suchSpalte = 4;
int startZeile = 8;
// Schleife für Zellenüberprüfung
for (int i = startZeile; i < sheet.getRows(); i++)
{
// Einlesen der Zellen in die String-Variablen
cellText = sheet.getCell(suchSpalte, i).getContents().trim();
nameCounter = isNameInVector(cellText);
if (nameCounter == null)
{
if (!cellText.equals(""))
{
this.nameVector.add(new NameCounter(cellText));
}
}
else
{
nameCounter.setCounterUp();
}
}
try{
WritableWorkbook workbook1 = Workbook.createWorkbook(new File("//homedir/******/myfile.xls"));
WritableSheet sheet1 = workbook1.createSheet("meop2", 2);
// Schleife für die Konsolenausgabe
for (int i = 0; i < this.nameVector.size(); i++)
{
nameCounter = this.nameVector.elementAt(i);
System.out.println(nameCounter.getName() + ": " +" \t "+ nameCounter.getCounts());
Label label = new Label(3, (i+5),nameCounter.getName() + ": " );
sheet1.addCell(label);
Number number = new Number(6, (i+5), nameCounter.getCounts());
sheet1.addCell(number);
}
workbook1.write();
workbook1.close();
}
catch (Exception e) {
System.out.println("Exception: " + e.getMessage());
}
}
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 File("//homedir/******/myfile.xls"));
String strLine;
while ( (strLine = reader.readLine()) != null )
{
String[] items = strLine.split(";");
tableModel.addRow(items);
}
tableModel.fireTableDataChanged();
}
catch(FileNotFoundException e) {}
catch(IOException e) {}
}
}
/**
* Überprüfen ob der Name bereits im Vector vorhanden ist.
*/
public NameCounter isNameInVector(String name)
{
NameCounter nameCounter = null;
NameCounter nameCounterTest;
for (int i = 0; i < nameVector.size(); i++)
{
nameCounterTest = nameVector.elementAt(i);
if (nameCounterTest.getName().equals(name))
{
nameCounter = nameCounterTest;
break;
}
else
{
nameCounter = null;
}
}
return nameCounter;
}
/**
* Mainmethode
*/
public static void main(String[] args)
{
new ExcelTest().start();
CSVTest frame = new CSVTest();
frame.setLocation(150, 90);
frame.setSize(600, 500);
frame.setResizable(true);
frame.setVisible(true);
}
}
Code:
public class NameCounter
{
public String name;
public int counter;
/**
* Konstruktor
*/
public NameCounter(String name)
{
this.name = name;
this.counter = 1;
}
/**
* Erhöht den Namenzähler
*/
public void setCounterUp()
{
this.counter++;
}
/**
* Gibt den Namen zurück.
*
* @return {@link String}
*/
public String getName()
{
return name;
}
/**
* Gibt die Anzahl der gezählten Namen zurück.
*
* @return {@link Integer}
*/
public int getCounts()
{
return counter;
}
}
Zuletzt bearbeitet: