He querido estudiar el método de usar Java para operar Excel durante mucho tiempo. No tengo nada que hacer hoy, así que aprendí un poco y lo resumí. Para utilizar Java para operar Excel, existe una herramienta de código abierto: jxl.jar, que se puede descargar desde http://sourceforge.net/projects/jexcelapi/files/.
1. Lea el contenido del archivo Excel.
Copie el código de código de la siguiente manera:
/** *//**Leer el contenido del archivo Excel
* Archivo @param para leer
* @devolver
*/
Cadena estática pública readExcel (archivo)...{
StringBuffer sb = nuevo StringBuffer();
Libro de trabajo wb = nulo;
intentar...{
//Construir objeto de libro de trabajo
wb=Workbook.getWorkbook(archivo);
} captura (BiffException e) ...{
e.printStackTrace();
} captura (IOException e) ...{
e.printStackTrace();
}
si(wb==nulo)
devolver nulo;
// Después de obtener el objeto Libro de trabajo, puede obtener el objeto Hoja (hoja de trabajo) a través de él
Hoja[] hoja = wb.getSheets();
if(hoja!=null&&hoja.longitud>0)...{
//Recorre cada hoja de trabajo
for(int i=0;i<hoja.longitud;i++)...{
//Obtiene el número de filas de la hoja de trabajo actual
int númerofila = hoja[i].getRows();
para(int j=0;j<rowNum;j++)...{
//Obtiene todas las celdas de la fila actual
Celda[] celdas = hoja[i].getRow(j);
if(celdas!=null&&celdas.longitud>0)...{
//recorre cada celda
for(int k=0;k<celdas.longitud;k++)...{
//Leer el valor de la celda actual
Cadena cellValue = celdas[k].getContents();
sb.append(cellValue+" ");
}
}
sb.append(" ");
}
sb.append(" ");
}
}
//Finalmente cierra el recurso y libera memoria
wb.cerrar();
devolver sb.toString();
}
2. Escribir en un archivo de Excel
Hay muchos formatos aquí, como contenido de texto en negrita, agregar ciertos colores, etc. Puede consultar la API de jxl
Copie el código de código de la siguiente manera:
/**Generar un archivo Excel
* @param fileName El nombre del archivo Excel que se generará
*/
escritura vacía estática públicaExcel (nombre de archivo de cadena)...{
WritableWorkbook wwb = nulo;
intentar...{
// Primero use el método de fábrica de la clase Workbook para crear un objeto de libro de trabajo grabable (Workbook)
wwb = Workbook.createWorkbook(nuevo archivo(nombre de archivo));
} captura (IOException e) ...{
e.printStackTrace();
}
si(wwb!=nulo)...{
//Crea una hoja de trabajo grabable
// El método createSheet del libro de trabajo tiene dos parámetros. El primero es el nombre de la hoja de trabajo y el segundo es la posición de la hoja de trabajo en el libro de trabajo.
WritableSheet ws = wwb.createSheet("hoja1", 0);
//Comienza a agregar celdas a continuación
para(int i=0;i<10;i++)...{
para(int j=0;j<5;j++)...{
// Lo que hay que tener en cuenta aquí es que en Excel, el primer parámetro representa la columna y el segundo parámetro representa la fila.
Etiqueta etiquetaC = nueva Etiqueta(j, i, "Esta es la fila "+(i+1)+", columna "+(j+1)+"");
intentar...{
//Agrega las celdas generadas a la hoja de trabajo.
ws.addCell(etiquetaC);
} captura (RowsExceededException e) ...{
e.printStackTrace();
} captura (WriteException e) ...{
e.printStackTrace();
}
}
}
intentar...{
//Escribir desde la memoria al archivo
wwb.write();
//Cerrar recursos y liberar memoria
wwb.close();
} captura (IOException e) ...{
e.printStackTrace();
} captura (WriteException e) ...{
e.printStackTrace();
}
}
}
Nota: Si desea escribir contenido en un Excel existente, debe proceder de la siguiente manera:
Copie el código de código de la siguiente manera:
Libro WritableWorkbook = nulo;
intentar...{
// Excel obtiene el archivo
Libro de trabajo wb = Workbook.getWorkbook(nuevo archivo("D:/test.xls"));
// Abre una copia de un archivo y escribe los datos especificados en el archivo original
libro = Workbook.createWorkbook(nuevo archivo("D:/test.xls"), wb);
//Agregar una hoja de trabajo
Hoja WritableSheet = book.getSheet("hoja1");
Sheet.addCell(new Label(8,3, "Se agrega algo en la fila 3, columna 8"));
//TODO Se omiten las siguientes partes
}captura(Excepción e)...{
e.printStackTrace();
}
3. Descubra si un archivo de Excel contiene una determinada palabra clave
Copie el código de código de la siguiente manera:
/** Buscar si un determinado archivo contiene una determinada palabra clave
* Archivo @param archivo a buscar
* @param keyWord La palabra clave a buscar
* @devolver
*/
palabra clave de búsqueda booleana estática pública (archivo de archivo, palabra clave de cadena)...{
res booleana = falso;
Libro de trabajo wb = nulo;
intentar...{
//Construir objeto de libro de trabajo
wb=Workbook.getWorkbook(archivo);
} captura (BiffException e) ...{
devolver resolución;
} captura (IOException e) ...{
devolver resolución;
}
si(wb==nulo)
devolver resolución;
// Después de obtener el objeto Libro de trabajo, puede obtener el objeto Hoja (hoja de trabajo) a través de él
Hoja[] hoja = wb.getSheets();
hoja de descanso booleana = false;
if(hoja!=null&&hoja.longitud>0)...{
//Recorre cada hoja de trabajo
for(int i=0;i<hoja.longitud;i++)...{
si (hoja de descanso)
romper;
//Obtiene el número de filas de la hoja de trabajo actual
int númerofila = hoja[i].getRows();
booleano breakRow = falso;
para(int j=0;j<rowNum;j++)...{
si(romperFila)
romper;
//Obtiene todas las celdas de la fila actual
Celda[] celdas = hoja[i].getRow(j);
if(celdas!=null&&celdas.longitud>0)...{
booleano breakCell = falso;
//recorre cada celda
for(int k=0;k<celdas.longitud;k++)...{
si(romperCelda)
romper;
//Leer el valor de la celda actual
Cadena cellValue = celdas[k].getContents();
si(valorcelda==nulo)
continuar;
if(cellValue.contains(keyWord))...{
res = verdadero;
romperCelda = verdadero;
breakRow = verdadero;
hoja de descanso = verdadero;
}
}
}
}
}
}
//Finalmente cierra el recurso y libera memoria
wb.cerrar();
devolver resolución;
}
4. Insertar icono de imagen en Excel
Insertar imágenes es fácil, consulte el siguiente código:
Copie el código de código de la siguiente manera:
/** *//**Insertar imágenes en Excel
* @param dataSheet La hoja de trabajo que se insertará
* @param col La imagen comienza desde esta columna
* @param fila La imagen comienza en esta fila
* @param ancho El número de columnas ocupadas por la imagen.
* @param height El número de filas ocupadas por la imagen
* @param imgFile El archivo de imagen que se insertará
*/
insertImg vacío estático público (WritableSheet dataSheet, int col, int fila, int ancho,
int altura, Archivo imgFile)...{
WritableImage img = new WritableImage(col, fila, ancho, alto, imgFile);
hoja de datos.addImage(img);
}
Los comentarios del código anterior ya son muy claros y probablemente ya no sea necesario explicarlos. Podemos verificarlo con el siguiente programa:
Copie el código de código de la siguiente manera:
intentar...{
//Crear un libro de trabajo
Libro de trabajo WritableWorkbook = Workbook.createWorkbook(new File("D:/test1.xls"));
//Hoja de trabajo a insertar
WritableSheet imgSheet = workbook.createSheet("Imágenes",0);
//Archivo de imagen a insertar
Archivo imgFile = nuevo archivo("D:/1.png");
//La imagen se inserta en la primera celda de la segunda fila, ocupando seis celdas cada una de largo y ancho.
insertImg(imgSheet,0,1,6,6,imgFile);
libro de trabajo.write();
libro de trabajo.close();
} captura (IOException e) ...{
e.printStackTrace();
} captura (WriteException e) ...{
e.printStackTrace();
}
Pero jxl solo admite imágenes en formato png y no se admiten formatos jpg ni gif.
5. Insertar encabezado y pie de página
Generalmente, los encabezados y pies de página se dividen en tres partes, izquierda, centro y derecha. Puede utilizar el siguiente código para insertar encabezados y pies de página.
Copie el código de código de la siguiente manera:
/** *//**Agregar encabezado y pie de página a Excel
* @param dataSheet La hoja de trabajo que se agregará al encabezado
* @param izquierda
* @param centro
* @param derecha
*/
setHeader público estático vacío (Hoja de datos WritableSheet, Cadena izquierda, Cadena centro, Cadena derecha)...{
Pie de encabezado hf = nuevo Pie de encabezado();
hf.getLeft().append(izquierda);
hf.getCentre().append(centro);
hf.getRight().append(derecha);
//Agregar encabezado
hoja de datos.getSettings().setHeader(hf);
//Añadir pie de página
//dataSheet.getSettings().setFooter(hf);
}
Podemos probar este método con el siguiente código:
Copie el código de código de la siguiente manera:
intentar...{
//Crear un libro de trabajo
Libro de trabajo WritableWorkbook = Workbook.createWorkbook(new File("D:/test1.xls"));
//Hoja de trabajo a insertar
WritableSheet dataSheet = workbook.createSheet("Agregar encabezado",0);
ExcelUtils.setHeader(dataSheet, "chb", "2007-03-06", "Página 1 de 3");
libro de trabajo.write();
libro de trabajo.close();
} captura (IOException e) ...{
e.printStackTrace();
} captura (WriteException e) ...{
e.printStackTrace();
}