package Writer;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.Locale;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import jxl.CellView;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.format.UnderlineStyle;
import jxl.write.Formula;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class Excel extends JFrame implements ActionListener {
private WritableCellFormat timesBoldUnderline;
private WritableCellFormat times;
private String inputFile;
public void setOutputFile(String inputFile) {
this.inputFile = inputFile;
}
public void write() throws IOException, WriteException {
File file = new File(inputFile);
WorkbookSettings wbSettings = new WorkbookSettings();
wbSettings.setLocale(new Locale("en", "EN"));
WritableWorkbook workbook = Workbook.createWorkbook(file, wbSettings);
workbook.createSheet("Report", 0);
WritableSheet excelSheet = workbook.getSheet(0);
createLabel(excelSheet);
createContent(excelSheet);
workbook.write();
workbook.close();
}
private void createLabel(WritableSheet sheet)
throws WriteException {
// Lets create a times font
WritableFont times10pt = new WritableFont(WritableFont.TIMES, 10);
// Define the cell format
times = new WritableCellFormat(times10pt);
// Lets automatically wrap the cells
times.setWrap(true);
// create create a bold font with unterlines
WritableFont times10ptBoldUnderline = new WritableFont(WritableFont.TIMES, 10, WritableFont.BOLD, false,
UnderlineStyle.SINGLE);
timesBoldUnderline = new WritableCellFormat(times10ptBoldUnderline);
// Lets automatically wrap the cells
timesBoldUnderline.setWrap(true);
CellView cv = new CellView();
cv.setFormat(times);
cv.setFormat(timesBoldUnderline);
cv.setAutosize(true);
// Write a few headers
addCaption(sheet, 0, 0, "User");
addCaption(sheet, 1, 0, "ID");
addCaption(sheet, 2, 0, "LogIn Time");
addCaption(sheet, 3, 0, "LogOut Time");
}
private void createContent(WritableSheet sheet) throws WriteException,
RowsExceededException
{
JFrame frame = new JFrame();
frame.setLocationRelativeTo(null);
frame.setSize(200, 105);
frame.setVisible(true);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setLayout(new FlowLayout());
JButton button = new JButton("LogIn");
JButton button2 = new JButton("LogOut");
JButton button3 = new JButton("Exit");
button.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
frame.add(button);
frame.add(button2);
frame.add(button3);
}
@Override
public void actionPerformed(ActionEvent e)
{
String name = e.getActionCommand();
if(name.equals("LogIn"))
{
WritableWorkbook workbook = Workbook.createWorkbook(new File("F:/Excel/User.xls");
{
WritableSheet sheet = workbook.createSheet("First Sheet", 0);
String x = JOptionPane.showInputDialog(null, "User");
JOptionPane.showMessageDialog(null, x);
addCaption(sheet, 1, 0, x);
}
}
else if(name.equals("LogOut"))
{
String y = JOptionPane.showInputDialog(null, "ID Number");
JOptionPane.showMessageDialog(null, y);
}
else if(name.equals("Exit"))
{
System.exit(0);
}
}
/* // Write a few number
for (int i = 1; i < 10; i++) {
// First column
addNumber(sheet, 0, i, i + 10);
// Second column
addNumber(sheet, 1, i, i * i);
}
// Lets calculate the sum of it
StringBuffer buf = new StringBuffer();
buf.append("SUM(A2:A10)");
Formula f = new Formula(0, 10, buf.toString());
sheet.addCell(f);
buf = new StringBuffer();
buf.append("SUM(B2:B10)");
f = new Formula(1, 10, buf.toString());
sheet.addCell(f);
// now a bit of text
for (int i = 12; i < 20; i++) {
// First column
addLabel(sheet, 0, i, "Boring text " + i);
// Second column
addLabel(sheet, 1, i, "Another text");
}*/
private void addCaption(WritableSheet sheet, int column, int row, String s)
throws RowsExceededException, WriteException {
Label label;
label = new Label(column, row, s, timesBoldUnderline);
sheet.addCell(label);
}
private void addNumber(WritableSheet sheet, int column, int row,
Integer integer) throws WriteException, RowsExceededException {
Number number;
number = new Number(column, row, integer, times);
sheet.addCell(number);
}
private void addLabel(WritableSheet sheet, int column, int row, String s)
throws WriteException, RowsExceededException {
Label label;
label = new Label(column, row, s, times);
sheet.addCell(label);
}
public static void main(String[] args) throws WriteException, IOException {
Excel test = new Excel();
test.setOutputFile("F:/Excel/TEST.xls" );
test.write();
System.out
.println("Please check the result file under F:/Excel/TEST.xls ");
}
}