package plugins.searchingForProxy;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map.Entry;
import jxl.CellView;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.format.UnderlineStyle;
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 WriteExcel
{
private WritableCellFormat timesBoldUnderline;
private WritableCellFormat times;
private String inputFile = "/Users/despoina/userselection.xls";
ByteArrayOutputStream file = new ByteArrayOutputStream();
// private ByteArrayOutputStream file = new File(inputFile);
public void setOutputFile(String inputFile)
{
this.inputFile = inputFile;
}
// write a line
public void write(List<String> label, HashMap<Integer, ArrayList<String>> usrselect) throws IOException,
WriteException
{
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, label);
createContent(excelSheet, usrselect);
workbook.write();
workbook.close();
}
private void createLabel(WritableSheet sheet, List<String> labels) throws WriteException
{
WritableFont times10pt = new WritableFont(WritableFont.TIMES, 10);
times = new WritableCellFormat(times10pt);
times.setWrap(true);
WritableFont times10ptBoldUnderline = new WritableFont(WritableFont.TIMES, 10, WritableFont.BOLD, false,
UnderlineStyle.SINGLE);
timesBoldUnderline = new WritableCellFormat(times10ptBoldUnderline);
timesBoldUnderline.setWrap(true);
CellView cv = new CellView();
cv.setFormat(times);
cv.setFormat(timesBoldUnderline);
cv.setAutosize(true);
// add one label
for (int i = 0; i < labels.size(); i++)
addCaption(sheet, i, 0, labels.get(i));
}
private void createContent(WritableSheet sheet, HashMap<Integer, ArrayList<String>> usrselect)
throws WriteException, RowsExceededException
{
for (Entry<Integer, ArrayList<String>> eachEntry : usrselect.entrySet())
{
System.out.println(eachEntry.getValue().size());
for (int column = 0; column < eachEntry.getValue().size(); column++)
{
addLabel(sheet, column, eachEntry.getKey(), usrselect.get(eachEntry.getKey()).get(column));
}
}
}
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 ByteArrayOutputStream getFile()
{
return this.file;
}
// public static void main(String[] args) throws WriteException, IOException
// {
// WriteExcel test = new WriteExcel();
// test.setOutputFile("/Users/despoina/out.xls");
//
// List<String> columns = new ArrayList<String>();
//
//
// columns.add("first line 1st column");
// columns.add("1-2");
// test.write("User selections", 0, columns);
//
// List<String> columns2 = new ArrayList<String>();
//
// columns2.add("second line first column ");
// test.write("User selections", 1, columns2);
//
//
// System.out.println("Please check the result file under /Users/despoina/out.xls");
//
// }
}