package app.astrosoft.util;
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import app.astrosoft.beans.Place;
import app.astrosoft.consts.AstrosoftTableColumn;
import app.astrosoft.consts.XmlConsts;
import app.astrosoft.core.Panchang;
import app.astrosoft.core.PanchangList;
import app.astrosoft.pref.AstrosoftPref;
import app.astrosoft.ui.AstroSoft;
import app.astrosoft.ui.table.MapTableRow;
import app.astrosoft.ui.table.TableData;
import app.astrosoft.ui.table.TableRowData;
import jxl.Workbook;
import jxl.format.CellFormat;
import jxl.write.Label;
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 PanExcelWriter {
private static String PARENT_DIR = "c:/astrosoft/docs";
private static DateFormat monFormat = new SimpleDateFormat("MMM_yyyy");
private static DateFormat dateFormat = new SimpleDateFormat("dd EEE");
//private WritableSheet sheet;
public static void main(String[] args) throws Exception {
AstrosoftPref pref = AstroSoft.getPreferences();
pref.setPlace(Place.getDefault());
new PanExcelWriter(2009);
}
public PanExcelWriter(int year) throws Exception {
WritableWorkbook workbook = null;
PanchangList pl = new PanchangList(year);
WritableSheet sheet= null;
int sheetNo = 0;
for(Panchang p:pl){
Calendar cal = p.getDate();
if (cal.get(Calendar.DATE) == 1) {
workbook = Workbook.createWorkbook(new File(PARENT_DIR, "pan_" + monFormat.format(cal.getTime()) + ".xls" ));
sheetNo = 0;
}
sheet = workbook.createSheet(dateFormat.format(cal.getTime()), sheetNo++);
sheet.setColumnView(0, 10);
sheet.setColumnView(1, 30);
TableData<MapTableRow> data = p.getPanchangTableData();
for(int i = 0; i < data.getRowCount(); i++){
TableRowData row = data.getRow(i);
String key = row.getColumnData(AstrosoftTableColumn.Key).toString();
if (!key.equals("Auspicious Time") && !key.equals("Rahu Kala") && !key.equals("Yama Kanda") ){
if (key.indexOf("End") >= 0){
key = key.substring(0, key.length()-9);
}
writeRow(sheet, i, key, row.getColumnData(AstrosoftTableColumn.Value).toString());
}
}
if (cal.get(Calendar.DATE) == cal.getActualMaximum(Calendar.DATE)){
workbook.write();
workbook.close();
}
}
}
private static void writeRow(WritableSheet sheet, int row, String param, String value) throws RowsExceededException, WriteException{
Label label = new Label(0, row, param);
sheet.addCell(label);
WritableCellFormat cf = new WritableCellFormat(new WritableFont(WritableFont.createFont("Tahoma"),8));
// cf.setShrinkToFit(true);
label.setCellFormat(cf);
label = new Label(1, row, value);
label.setCellFormat(cf);
sheet.addCell(label);
}
}