package jturbojet.File;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import jxl.*;
import jxl.write.Number;
import jxl.write.*;
public class XLSWrite {
private final String data;
private final String filepath;
private WritableWorkbook workbook;
public XLSWrite(String filepath, String data) {
this.data = data;
this.filepath = filepath;
try {
workbook = Workbook.createWorkbook(new File(filepath));
buildXls(data);
} catch (IOException ex) {
Logger.getLogger(XLSWrite.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void buildXls(String data) {
try {
// Creates new sheet
WritableSheet sheet = workbook.createSheet("Output", 0);
Label rpml = new Label(0, 0, "RPM");
sheet.addCell(rpml);
Label etl = new Label(1, 0, "Exhaust Tempt");
sheet.addCell(etl);
Label otl = new Label(2, 0, "Oil Tempt");
sheet.addCell(otl);
String[] rows = data.split("\n");
for (int i = 0; i < rows.length; i++) {
String[] values = parseData(rows[i]);
if (checkNumbers(values)) {
Number rpm = new Number(0, i + 1, Integer.parseInt(values[0]));
Number et = new Number(1, i + 1, Float.parseFloat(values[1]));
Number ot = new Number(2, i + 1, Float.parseFloat(values[2]));
sheet.addCell(rpm);
sheet.addCell(et);
sheet.addCell(ot);
}
}
} catch (WriteException ex) {
Logger.getLogger(XLSWrite.class.getName()).log(Level.SEVERE, null, ex);
}
}
private boolean checkNumbers(String[] values) {
try {
Integer.parseInt(values[0]);
Float.parseFloat(values[1]);
Float.parseFloat(values[2]);
return true;
} catch (NumberFormatException e) {
return false;
}
}
private String[] parseData(String row) {
String[] values = row.split("-");
values[0] = values[0].substring(4).trim();
values[1] = values[1].substring(4).trim();
values[2] = values[2].substring(4).trim();
return values;
}
public void saveToFile() {
try {
workbook.write();
workbook.close();
} catch (IOException ex) {
Logger.getLogger(XLSWrite.class.getName()).log(Level.SEVERE, null, ex);
} catch (WriteException ex) {
Logger.getLogger(XLSWrite.class.getName()).log(Level.SEVERE, null, ex);
}
}
}