Hallo,
mit meinen paar Grundlagen und einer Beispielapp (beides kam schon mehr als 2 Jahre nicht mehr zum Einsatz) habe ich mich daran gemacht mir einen Konverter zu basteln, der eine CSV-Datei in ein JS-Array wandelt und als solches speichert. Die Unterschiede sind ja nicht so groß!
Soweit funktioniert alles wie es soll , mit 2 kleinen Ausnahmen, bei denen ich hoffe, daß mir jemand helfen kann:
a) nach der letzten eingelesenen Zeile darf kein Komma mehr gesetzt werden
b) beim Speichern soll der Name der geladenen CSV-Datei und die Erweiterung *.js als Vorschlagswert bereitstehen.
Der bisherige Code sieht so aus:
Ich freue mich wenn ich an der Stelle die Kuh vom Eis bekomme
Nach ne Frage in diesem Zusammenhang: läßt sich so etwas auch als Applet machen?
LG
opiWahn
mit meinen paar Grundlagen und einer Beispielapp (beides kam schon mehr als 2 Jahre nicht mehr zum Einsatz) habe ich mich daran gemacht mir einen Konverter zu basteln, der eine CSV-Datei in ein JS-Array wandelt und als solches speichert. Die Unterschiede sind ja nicht so groß!
Soweit funktioniert alles wie es soll , mit 2 kleinen Ausnahmen, bei denen ich hoffe, daß mir jemand helfen kann:
a) nach der letzten eingelesenen Zeile darf kein Komma mehr gesetzt werden
b) beim Speichern soll der Name der geladenen CSV-Datei und die Erweiterung *.js als Vorschlagswert bereitstehen.
Der bisherige Code sieht so aus:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import java.io.*;
public class csv2js extends JFrame implements ActionListener
{
public static void main(String[] args)
{
new csv2js();
}
JTextField tfName;
JTextArea taInhalt;
JButton laden, speichern;
public csv2js()
{
super("csv2js-Array");
tfName = new JTextField("", 50);
taInhalt = new JTextArea(10, 20);
JScrollPane sp = new JScrollPane(taInhalt);
laden = new JButton("Laden");
speichern = new JButton("Speichern");
laden.addActionListener(this);
speichern.addActionListener(this);
JPanel sued = new JPanel();
sued.setLayout(new FlowLayout(FlowLayout.CENTER));
sued.add(laden);
sued.add(speichern);
getContentPane().add(tfName, BorderLayout.NORTH);
getContentPane().add(sp);
getContentPane().add(sued, BorderLayout.SOUTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==laden)
{
dateiLaden();
}
if(e.getSource()==speichern)
{
dateiSpeichern();
}
}
public void dateiLaden()
{
try
{
JFileChooser fc = new JFileChooser();
fc.setCurrentDirectory(new File("."));
fc.setFileFilter(new MyFilter());
fc.setFileFilter(new MyFilter2());
int erg = fc.showOpenDialog(this);
if(erg == JFileChooser.APPROVE_OPTION){
String filename = fc.getSelectedFile().getAbsolutePath();
tfName.setText(filename);
BufferedReader br = new BufferedReader(new FileReader(new File(tfName.getText().trim())));
String s="";
taInhalt.setText("var werte = ["+"\n");
while( (s=br.readLine()) != null)
{
taInhalt.append('"'+s+'"'+","+"\n");
}
taInhalt.append("];"+"\n");
br.close();
}
}
catch(FileNotFoundException fe)
{
taInhalt.setText("Fehler beim Öffnen der Datei");
JOptionPane.showMessageDialog(this, "Fehler beim Öffnen der Datei");
}
catch(IOException ioe)
{
taInhalt.setText("Fehler beim Lesen der Datei");
JOptionPane.showMessageDialog(this, "Fehler beim Lesen der Datei");
}
}
public void dateiSpeichern()
{
try
{
JFileChooser fc = new JFileChooser();
fc.setCurrentDirectory(new File("."));
int erg = fc.showSaveDialog(this);
if(erg == JFileChooser.APPROVE_OPTION)
{
String filename = fc.getSelectedFile().getAbsolutePath();
tfName.setText(filename);
File f = new File(tfName.getText().trim());
System.out.println(f.exists());
BufferedWriter bw = new BufferedWriter(new FileWriter(tfName.getText().trim()));
bw.write(taInhalt.getText());
bw.close();
}
}
catch(IOException ioe)
{
taInhalt.setText("Fehler beim Speichern der Datei");
JOptionPane.showMessageDialog(this, "Fehler beim Speichern der Datei");
}
}
class MyFilter extends FileFilter
{
public boolean accept(File f) {
boolean erg=false;
erg = f.getName().toLowerCase().endsWith(".js") || f.isDirectory();
return erg;
}
public String getDescription() {
return "JS-Dateien";
}
}
class MyFilter2 extends FileFilter
{
public boolean accept(File f) {
boolean erg=false;
erg = f.getName().toLowerCase().endsWith(".csv") || f.isDirectory();
return erg;
}
public String getDescription() {
return "CSV-Dateien";
}
}
}
Ich freue mich wenn ich an der Stelle die Kuh vom Eis bekomme
Nach ne Frage in diesem Zusammenhang: läßt sich so etwas auch als Applet machen?
LG
opiWahn
Zuletzt bearbeitet: