pasa que la clase entera es para dibujar el excel.
el excel es para un remito de envio de mercaderia...
lo que dibujo son las lineas, esquinas, estilos de letras, etc.
paso parte del codigo donde creo que es lo mas importante.
Código Javascript
:
Ver originalpublic class GenerarExcel {
/*creo los atributos*/
HSSFWorkbook archivo = new HSSFWorkbook();
String ruta = "c://service/";
FileOutputStream fileOut;
Vector<Integer> listID;
HSSFCellStyle cs, csTitulo, csCentrado,
csLGSup, csLGInf,
csLGDer, csLGIzq,
csLSup, csLInf, csLDer, csLIzq, csNegrita,
csTopIzq, csTopDer, csBottomDer, csBottomIzq;
Font fNegrita, fuente, fNTitulo;
HSSFSheet hoja1;
HSSFRow remito;
String fecha;
public GenerarExcel(Vector<Integer> listIDDatServ) throws IOException {
try {
this.listID = listIDDatServ;
/* Carga los datos del excel de la ruta especificada* */
archivo = new HSSFWorkbook();
//tomo la primera hoja del archivo
hoja1 = archivo.createSheet("Hoja1");
//seteo la hoja en tamaño A4 horizontal
hoja1.getPrintSetup().setLandscape(false);
hoja1.getPrintSetup().setPaperSize(HSSFPrintSetup.A4_PAPERSIZE);
/** CARGO FILAS Y MARCOS DEL REMITO * */
this.creoFilas ();
/**Creo los estilos a:*/
this.creoEstilos();
this.setMargen();
/** CARGO CAMPOS FIJOS DEL REMITO * */
this.camposFijos();
/** CARGO CAMPOS VARIABLES DEL REMITO * */
this.camposVariables();
/** CARGO MARCOS DEL REMITO * */
this.creoMarcos();
fileOut = new FileOutputStream(ruta);
archivo.write(fileOut);
fileOut.close();
} catch (FileNotFoundException ex) {
JFrame frame = new JFrame();
JOptionPane.showMessageDialog(frame,
"No se encontró el archivo \n" +
"o el archivo ya se encuentra abierto. ",
"Error",
JOptionPane.WARNING_MESSAGE);
} catch (IOException ex) {
JFrame frame = new JFrame();
JOptionPane.showMessageDialog(frame,
"Error en la carga de datos. ",
"Error",
JOptionPane.WARNING_MESSAGE);
}catch (Exception ex) {
JFrame frame = new JFrame();
JOptionPane.showMessageDialog(frame,
"Se produjo un error y la APP se cerrará. ",
"Error",
JOptionPane.WARNING_MESSAGE);
}
}
Código CreoFilas:
Ver originalpublic void creoFilas (){
/**
* ANCHO COLUMNAS
* */
int i = hoja1.getColumnWidth(1);
//setColumnWidth(column, width);
hoja1.setColumnWidth(0, i/2); //col 0
hoja1.setColumnWidth(2, i/2); //col 10
hoja1.setColumnWidth(3, i*2); //col 10
hoja1.setColumnWidth(5, i/4); //col 4
hoja1.setColumnWidth(6, i/5); //col 5
// hoja1.setColumnWidth(7, i/2); //col 6
hoja1.setColumnWidth(11, i/2); //col 10
// archivo.set
/**
* CREO FILAS
* */
Row r;
int y;
for (int f = 0; f<=64; f++){
hoja1.createRow(f);
for (int g = 0; g<=12; g++){
hoja1.getRow(f).createCell(g);
}
}
}
Código creoMarcos:
Ver originalpublic void creoMarcos(){
/**
* AGREGO MARCOS Y LINEAS
* */
int x, y, z;
x = 0; y = 12; z = 2;
hoja1.getRow(0).getCell(0).setCellStyle(csTopIzq);
for (int i = 1; i<y; i++){
hoja1.getRow(0).getCell(i).setCellStyle(csLGSup);
}
hoja1.getRow(0).getCell(y).setCellStyle(csTopDer);
hoja1.getRow(0).getCell(6).setCellStyle(csTopIzq);
Row f;
for (int i = 1; i<=8; i++){
f = hoja1.getRow(i);
f.getCell(x).setCellStyle(csLGIzq);
f.getCell(y).setCellStyle(csLGDer);
}
hoja1.getRow(1).getCell(5).setCellStyle(csTopIzq);
hoja1.getRow(2).getCell(5).setCellStyle(csLGSup);
hoja1.getRow(1).getCell(6).setCellStyle(csTopDer);
hoja1.getRow(2).getCell(6).setCellStyle(csTopIzq);
hoja1.getRow(1).getCell(7).setCellStyle(csLGIzq);
for (int i = 3; i<=9; i++){
f = hoja1.getRow(i);
f.getCell(6).setCellStyle(csLGIzq);
}
hoja1.getRow(9).getCell(x).setCellStyle(csBottomIzq);
for (int i = 1; i<y; i++){
hoja1.getRow(9).getCell(i).setCellStyle(csLGInf);
}
hoja1.getRow(9).getCell(y).setCellStyle(csBottomDer);
hoja1.getRow(9).getCell(5).setCellStyle(csBottomDer);
for (int i = 10; i<14; i++){
f = hoja1.getRow(i);
f.getCell(x).setCellStyle(csLGIzq);
f.getCell(y).setCellStyle(csLGDer);
}
hoja1.getRow(14).getCell(x).setCellStyle(csBottomIzq);
hoja1.getRow(14).getCell(y).setCellStyle(csBottomDer);
for (int i = 1; i<y; i++){
hoja1.getRow(14).getCell(i).setCellStyle(csLGInf);
}
for (int i = 15; i<=18; i++){
f = hoja1.getRow(i);
f.getCell(x).setCellStyle(csLGIzq);
f.getCell(y).setCellStyle(csLGDer);
}
hoja1.getRow(18).getCell(x).setCellStyle(csBottomIzq);
for (int i = 1; i<y; i++){
hoja1.getRow(18).getCell(i).setCellStyle(csLGInf);
}
hoja1.getRow(18).getCell(y).setCellStyle(csBottomDer);
hoja1.getRow(19).getCell(x).setCellStyle(csLGIzq);
hoja1.getRow(19).getCell(y).setCellStyle(csLGDer);
hoja1.getRow(20).getCell(x).setCellStyle(csBottomIzq);
hoja1.getRow(20).getCell(y).setCellStyle(csBottomDer);
for (int i = 1; i<y; i++){
hoja1.getRow(20).getCell(i).setCellStyle(csLGInf);
}
for (int i = 21; i<=53; i++){
f = hoja1.getRow(i);
hoja1.getRow(i).getCell(x).setCellStyle(csLGIzq);
hoja1.getRow(i).getCell(2).setCellStyle(csLGIzq);
hoja1.getRow(i).getCell(y).setCellStyle(csLGDer);
}
f = hoja1.getRow(54);
for (int i = 1; i<y; i++){
f.getCell(i).setCellStyle(csLGInf);
}
f.getCell(2).setCellStyle(csBottomIzq);
f.getCell(x).setCellStyle(csBottomIzq);
f.getCell(y).setCellStyle(csBottomDer);
f = hoja1.getRow(61);
f.getCell(x).setCellStyle(csLGInf);
f.getCell(x+1).setCellStyle(csLGInf);
f.getCell(x+2).setCellStyle(csLGInf);
f.getCell(x+3).setCellStyle(csLGInf);
f.getCell(y-3).setCellStyle(csLGInf);
f.getCell(y-2).setCellStyle(csLGInf);
f.getCell(y-1).setCellStyle(csLGInf);
f.getCell(y).setCellStyle(csLGInf);
}
Código creoEstilos:
Ver originalpublic void creoEstilos(){
/*Creo los estilos a: */
csCentrado = archivo.createCellStyle();
csLSup = archivo.createCellStyle();
csLInf = archivo.createCellStyle();
csLDer = archivo.createCellStyle();
csLIzq = archivo.createCellStyle();
csLGDer = archivo.createCellStyle(); csLGIzq = archivo.createCellStyle();
csLGSup = archivo.createCellStyle(); csLGInf = archivo.createCellStyle();
csCentrado.setAlignment(CellStyle.ALIGN_CENTER);
//font size 10
fuente = archivo.createFont();
fuente.setFontHeightInPoints((short) 10);
fNTitulo = archivo.createFont();
fNTitulo.setFontHeightInPoints((short) 15);
// fNTitulo.setFont(HSSFFont.FONT_ARIAL); //Tipo ARIAL
fNTitulo.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //Negrita
//Simple style
cs = archivo.createCellStyle();
cs.setFont(fuente);
csTitulo = archivo.createCellStyle();
csTitulo.setFont(fNTitulo);
//NEGRITA
csNegrita = archivo.createCellStyle();
fNegrita = archivo.createFont();
fNegrita.setFontName(HSSFFont.FONT_ARIAL); //Tipo ARIAL
fNegrita.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //Negrita
fNegrita.setFontHeightInPoints((short)10); //tamaño 10
csNegrita.setFont(fNegrita);
//BORDES //SUPERIOR
csLGSup.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
//INFERIOR
csLGInf.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);
//DERECHA
csLGDer.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
//DERECHA SUPERIOR
csTopDer = archivo.createCellStyle();
csTopDer.setBorderTop(CellStyle.BORDER_MEDIUM);
csTopDer.setTopBorderColor(IndexedColors.BLACK.getIndex());
csTopDer.setBorderRight(CellStyle.BORDER_MEDIUM);
csTopDer.setRightBorderColor(IndexedColors.BLACK.getIndex());
csTopDer.setFont(fuente);
//DERECHA INFERIOR
csBottomDer = archivo.createCellStyle();
csBottomDer.setBorderBottom(CellStyle.BORDER_MEDIUM);
csBottomDer.setBottomBorderColor(IndexedColors.BLACK.getIndex());
csBottomDer.setBorderRight(CellStyle.BORDER_MEDIUM);
csBottomDer.setRightBorderColor(IndexedColors.BLACK.getIndex());
csBottomDer.setFont(fuente);
//IZQUIERDA
csLGIzq.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
//IZQUIERDA SUPERIOR
csTopIzq = archivo.createCellStyle();
csTopIzq.setBorderTop(CellStyle.BORDER_MEDIUM);
csTopIzq.setTopBorderColor(IndexedColors.BLACK.getIndex());
csTopIzq.setBorderLeft(CellStyle.BORDER_MEDIUM);
csTopIzq.setLeftBorderColor(IndexedColors.BLACK.getIndex());
csTopIzq.setFont(fuente);
//IZQUIERDA INFERIOR
csBottomIzq = archivo.createCellStyle();
csBottomIzq.setBorderBottom(CellStyle.BORDER_MEDIUM);
csBottomIzq.setBottomBorderColor(IndexedColors.BLACK.getIndex());
csBottomIzq.setBorderLeft(CellStyle.BORDER_MEDIUM);
csBottomIzq.setLeftBorderColor(IndexedColors.BLACK.getIndex());
csBottomIzq.setFont(fuente);
}
estas son para dibujar el contorno del remito, esquinas e interlineado.
el lo que falta es lo que cargo las celdas con datos de la base de datos, que no es mas que
Código cargar una celda:
Ver originalhoja1.getRow(numFila).getCell(numCelda).setCellValue("Valor a cargar en la celda");
hoja1.getRow(numFila).getCell(numCelda).setCellStyle(estilo a asignar a dicha celda);
saludos.