Con esta API, los sistemas operativos que no son Windows también pueden procesar tablas de datos de Excel a través de aplicaciones Java puras. Debido a que está escrito en Java, podemos llamar a la API a través de JSP y Servlet en la aplicación web para acceder a la tabla de datos de Excel.
Copie el código de código de la siguiente manera:
paquete com.yonyou.test;
importar java.io.File;
importar java.io.IOException;
importar jxl.Libro de trabajo;
importar jxl.format.Alignment;
importar jxl.format.Border;
importar jxl.format.BorderLineStyle;
importar jxl.format.Color;
importar jxl.format.UnderlineStyle;
importar jxl.write.Label;
importar jxl.write.NumberFormats;
importar jxl.write.WritableCellFormat;
importar jxl.write.WritableFont;
importar jxl.write.WritableSheet;
importar jxl.write.WritableWorkbook;
importar jxl.write.WriteException;
importar jxl.write.biff.RowsExceededException;
clase pública JxlTable {
JxlTable estática final privada jxlTable = nueva JxlTable();
getInstance público estático JxlTable() {
devolver jxlTable;
}
tabla Jxl pública() {
}
crear tabla booleana pública (encabezado de cadena, cuerpo de cadena [], ruta de archivo de cadena) {
booleano createFlag = verdadero;
Libro de trabajo grabable;
intentar {
//Generar archivo Excel basado en la ruta
libro = Workbook.createWorkbook(nuevo archivo(filePath));
//Crea una hoja llamada "Tabla"
Hoja WritableSheet = book.createSheet("Tabla", 0);
//Establecer NO ancho de columna
hoja.setColumnView(1, 5);
//Elimina las líneas de la cuadrícula en toda la hoja
hoja.getSettings().setShowGridLines(false);
Etiqueta tempLabel = nulo;
// salida del encabezado
String[] headerArr = header.split(",");
int encabezadoLen = encabezadoArr.length;
// Bucle para escribir el contenido del encabezado
for (int i = 0; i < encabezadoLen; i++) {
tempLabel = nueva etiqueta(1 + i, 1, headerArr[i],
getHeaderCellStyle());
hoja.addCell(tempLabel);
}
// salida del cuerpo de la tabla
int bodyLen = cuerpo.longitud;
// Bucle para escribir el contenido del cuerpo de la tabla
for (int j = 0; j < bodyLen; j++) {
String[] bodyTempArr = cuerpo[j].split(",");
for (int k = 0; k < bodyTempArr.length; k++) {
WritableCellFormat tempCellFormat = nulo;
tempCellFormat = getBodyCellStyle();
si (tempCellFormat! = nulo) {
if (k == 0 || k == (bodyTempArr.length - 1)) {
tempCellFormat.setAlignment(Alineación.CENTRO);
}
}
tempLabel = nueva etiqueta(1 + k, 2 + j, bodyTempArr[k],
tempCellFormat);
hoja.addCell(tempLabel);
}
}
libro.write();
libro.cerrar();
} captura (IOException e) {
crear bandera = falso;
System.out.println("¡Error al crear EXCEL!");
e.printStackTrace();
} captura (RowsExceededException e) {
crear bandera = falso;
System.out.println("¡Error al crear la configuración de la unidad EXCEL!");
e.printStackTrace();
} captura (WriteException e) {
crear bandera = falso;
System.out.println("¡Error al escribir en EXCEL!");
e.printStackTrace();
}
devolver crear bandera;
}
público WritableCellFormat getHeaderCellStyle() {
Fuente WritableFont = nueva WritableFont(WritableFont.createFont("宋体"), 10,
WritableFont.BOLD, falso, UnderlineStyle.NO_UNDERLINE);
WritableCellFormat headerFormat = nuevo WritableCellFormat(
NumberFormats.TEXT);
intentar {
//Agregar configuración de fuente
headerFormat.setFont(fuente);
//Establece el color de fondo de la celda: el encabezado es amarillo
headerFormat.setBackground(Color.AMARILLO);
//Establecer estilo de borde de la tabla de encabezado
//Toda la línea de la mesa es gruesa y negra
headerFormat.setBorder(Border.ALL, BorderLineStyle.THICK,
Color.NEGRO);
//El contenido del encabezado se muestra horizontalmente en el centro
headerFormat.setAlignment(Alineación.CENTRO);
} captura (WriteException e) {
System.out.println("¡Error al configurar el estilo de celda del encabezado!");
}
devolver formato de encabezado;
}
público WritableCellFormat getBodyCellStyle() {
Fuente WritableFont = nueva WritableFont(WritableFont.createFont("宋体"), 10,
WritableFont.NO_BOLD, falso, UnderlineStyle.NO_UNDERLINE);
WritableCellFormat bodyFormat = nuevo WritableCellFormat(fuente);
intentar {
//Establece el color de fondo de la celda: el cuerpo de la tabla es blanco
bodyFormat.setBackground(Color.BLANCO);
//Establecer estilo de borde de la tabla de encabezado
//Toda la línea de la mesa es delgada y negra
formato de cuerpo
.setBorder(Borde.TODO, BorderLineStyle.THIN, Color.NEGRO);
} captura (WriteException e) {
System.out.println("¡Error en la configuración del estilo de celda del cuerpo de la tabla!");
}
devolver formato de cuerpo;
}
público estático vacío principal (String [] argumentos) {
Encabezado de cadena = "NO, nombre, sexo, edad";
Cadena [] cuerpo = nueva cadena [4];
cuerpo[0] = "1,Ouyang Feng, hombre, 68";
cuerpo[1] = "2,Huang Yaoshi,Hombre,67";
cuerpo[2] = "3,Hong Qigong,Hombre,70";
cuerpo[3] = "4,Guo Jing,Hombre,32";
String filePath = "e:/test.xls";
JxlTable pruebaJxl = JxlTable.getInstance();
bandera booleana = testJxl.createTable (encabezado, cuerpo, ruta de archivo);
si (bandera) {
System.out.println("¡¡La tabla se creó correctamente!!");
}
}
}
Explicación paso a paso:
leer archivo excel
Para leer un archivo de Excel, primero debes crear un libro de palabras:
Copie el código de código de la siguiente manera:
Libro de trabajo wb=Workbook.getWorkbook(Archivo de archivo);
Libro de trabajo wb=Workbook.getWorkbook(InputStream es);
Entonces puedes obtener su hoja de trabajo :
Copie el código de código de la siguiente manera:
Sheet[]sheets=wb.getSheets(); //Obtener todas las hojas de trabajo
Sheet Sheet=wb.getSheet(0); // Indica obtener la primera hoja de trabajo.
Finalmente, puedes obtener los valores de ciertas celdas en una hoja de trabajo:
Copie el código de código de la siguiente manera:
Cell cell=sheet.getCell(0,0); //Obtiene los datos de la primera columna y la primera fila. El primer parámetro es la columna.
String value=cell.getContents(); //Obtiene el valor de la celda en forma de cadena
String type=cell.getType(); //Obtiene el tipo de datos de la celda.
Cierre el flujo de trabajo del libro :
Cuando termine de procesar los datos de la hoja de cálculo de Excel, asegúrese de utilizar el método close() para cerrar el objeto creado previamente y liberar el espacio de memoria ocupado en el proceso de lectura de la tabla de datos. Esto es especialmente importante cuando se lee una gran cantidad de datos. . Consulte el siguiente fragmento de código:
Copie el código de código de la siguiente manera:
wb.cerrar();
Nota: Solo puede cerrar Excel después de completar la operación. Después de cerrar, llamar a Sheet s=wb.getSheet(0) será nulo.
Introducción a los métodos comúnmente utilizados :
Métodos proporcionados por la clase Workbook
1. int obtenerNúmeroDeHojas()
Obtenga la cantidad de hojas de trabajo en el libro de trabajo, ejemplo:
Copie el código de código de la siguiente manera:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(nuevo archivo(archivo fuente));
int hojas = rwb.getNumberOfSheets();
2. Hoja[] getSheets()
Devuelve una matriz de objetos Hoja en el Libro de trabajo, ejemplo:
Copie el código de código de la siguiente manera:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(nuevo archivo(archivo fuente));
Hoja[] hojas = rwb.getSheets();
Métodos proporcionados por la interfaz Sheet
1. Cadena getName()
Obtenga el nombre de la Hoja, ejemplo:
Copie el código de código de la siguiente manera:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(nuevo archivo(archivo fuente));
jxl.Hoja rs = rwb.getSheet(0);
String nombre de hoja = rs.getName();
2.int obtenerColumnas()
Obtenga el número total de columnas contenidas en la tabla Hoja, ejemplo:
Copie el código de código de la siguiente manera:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(nuevo archivo(archivo fuente));
jxl.Hoja rs = rwb.getSheet(0);
int rsColumns = rs.getColumns();
3. Celda [] getColumn (columna int)
Obtenga todas las celdas de una determinada columna y devuelva una matriz de objetos de celda. Ejemplo:
Copie el código de código de la siguiente manera:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(nuevo archivo(archivo fuente));
jxl.Hoja rs = rwb.getSheet(0);
Celda[] celda = rs.getColumn(0);
4.int obtenerFilas()
Obtenga el número total de filas contenidas en la tabla Hoja, ejemplo:
Copie el código de código de la siguiente manera:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(nuevo archivo(archivo fuente));
jxl.Hoja rs = rwb.getSheet(0);
int rsRows = rs.getRows();
5. Celda[] getRow(int fila)