ventaja:
JXL admite muy bien el chino, y la operación es simple, y el método depende del nombre y el significado.
JXL es una API Java pura, que funciona perfectamente en las plataformas. El código se puede ejecutar en Windows o Linux sin reescribir
Admite todas las versiones de Excel 95-2000 (se dice en línea que puede admitir Excel 2007 en la actualidad, pero aún no lo ha probado)
Generar Formato estándar Excel 2000
Fuente de soporte, número, operaciones de fecha
Capaz de modificar las propiedades de las celdas
Se admiten imágenes y gráficos, pero esta API tiene soporte limitado para gráficos y gráficos, y solo reconoce el formato PNG.
defecto:
Soporte de imágenes ineficiente e imperfecto y soporte menos potente para formatos que POI
Caso:
String Times = (new SimpleDateFormat ("yyyymmddhhmmss")). Format (new Date ()); String fname = "System Log" + Times; // Lista de nombres de archivo <ROGS> LIST = LogsService.SelectForList (HQL.ToString ()); String path = request.getSession (). GetServletContext (). GetRealPath ("/") + "XLS/" + (nuevo SimpleDateFormat ("yyyymmdd")). Format (new Date ()); Archivo archivo = nuevo archivo (ruta); // Crear if (! File.Exists () &&! File.isDirectory ()) {file.mkdir (); } Respuesta.SetContentType ("Application/VND.MS-Excel; Charset = UTF-8"); // // Especifique el tipo de ahorro del archivo. respuesta.setcharacterEncoding ("UTF-8"); ExportUtil.writer_log (solicitud, fname, lista, respuesta); // Descargar al localEl método de exportación de escritor_log es el siguiente
/*** Genere el archivo de Excel y exporte a la computadora local* @param fname Nombre del archivo* @param Lista Los datos que se imprimirán, es decir, la lista de datos de consultas de bases de datos*/public static void escritor_log (httpservletRequest solicitud, cadena fname, lista htttttpSesponse respuesta) {intent {outputStream OS = respuesta. Response.reset (); // Borrar la transmisión de salida // El siguiente es el inicio de procesar el nombre de archivo chino Respuesta. else fname = new String (fname.getBytes ("UTF-8"), "ISO-8859-1"); respuesta.setheader ("Disposición de contenido", "Adjunto; FileName ="+Fname+". XLS"); respuesta.setContentType ("Application/Msexcel; Charset = UTF-8"); // Defina el tipo de salida // El procesamiento del nombre de archivo chino finaliza // El libro de trabajo aquí importa importar JXL.WorkBook; WRATITYWORKBOOK wbook = Workbook.CreateWorkbook (OS); // Crear el archivo de Excel WritableSheet Sheet = wbook.createSheet ("Log del sistema", 0); // Nombre de hoja de trabajo CellView CellView = new CellView (); CellView.SetAutosize (verdadero); // Establecer la hoja de tamaño automático. SetColumnView (0, 8); // establecer el ancho de la celda, 0 es el número de columna, 8 es la hoja de ancho. SetColumnView (1, 20); // Establecer el ancho de la celda, 1 es el número de columna, 20 es la hoja de ancho. SetColumnView (2, 24); sheet.setColumnView (3, 20); sheet.setColumnView (4, 30); sheet.setColumnView (5, 13); sheet.setColumnView (6, 15); sheet.setColumnView (7, 32); sheet.setColumnView (8, 15); // Establecer Fuitable Font WableFont WFONT = new WittitionFont (WrititableFont.CreateFont ("宋体"), 22, witableFont.Bold, falso, jxl.format.underlinestyle.no_underline, jxl.format.colour.black); // establecer el estilo de fuente de celda WritableCellFormat titleFormat = new WritableCellFormat (WFONT); // Agregar font de celda TitleFormat.SetAlignment (alineación.centre); // Establecer alineación de centrado de texto; String [] title = {"System Log"}; // Establezca el encabezado de la tabla de Excel. Etiqueta exceltitle = nueva etiqueta (i, 0, título [i], titleFormat); // Contenido de celda // orden de parámetros: columna de inicio, fila de inicio, columna final, end fila lámina.mergecells (0, 0, 8, 0); // ubicación, qué fila, qué hoja de columna. // Agregar información de celda} // Establezca el extremo del encabezado de la tabla de Excel // la primera fila, es decir, el tiempo de visualización, parámetros: (columna, fila, contenido) wititablefont wfonttime = new wititablefont (writitablefont.createFont ("宋体"), 11, jxl.format.colour.black); // establecer el estilo de fuente de celda WritableCellFormat Titlettime = new WritableCellFormat (wfonttime); // Agregar fuente de celda Titlettime.setAlignment (alineación.right); // Establecer alineación de centrado de texto; DateFormat df = new SimpleDateFormat ("yyyy-mm-dd"); // sheet.setColumnView (1, cellView); // Establezca automáticamente el ancho de la columna de acuerdo con la etiqueta de contenido contentDate = new Label (0, 1, df.format (new Date ()), Titlettime); // contenido celular // sheet.mergecells (16, 1, 18, 1); // La ubicación, qué fila y columna están en la fila, es decir, la posición fusionada. Si no hay fusión, no puede escribir hoja.addcell (contentDate); // Agregar información de celda // El final de la primera fila // La segunda fila muestra la barra de título de condición WRITATYFONT WFONT2 = new WritingFont (WrititableFont.CreateFont ("宋体"), 11, WritableFont.Bold, False, Jxl.Format.underlinestyle.no_underline, jxl.format.colour.black); // establecer el estilo de fuente de celda WritableCellFormat titleFormat2 = new WritableCellFormat (WFONT2); // Agregar font de celda TitleFormat2.SetBorder (border.all, borderlinestyle.thin); // establecer la línea border-sólida; titleFormat2.Setalignment (alineación.centre); // Establecer la alineación centrada del texto; titleFormat2.SetVerticalAlignment (verticalAlignment.centre); // establecer centrado vertical; Etiqueta content2a = nueva etiqueta (0, 2, "número de serie", titleFormat2); // Contenido celular-1st Grid Label Content2B = New Label (1, 2, "Nombre de usuario", TitleFormat2); // Contenido celular-2nd Grid Label Content2C = New Label (2, 2, "Tiempo de registro", TitleFormat2); // Contenido celular-3rd Grid Label Content2C = New Label (2, 2, "Tiempo de registro", TitleFormat2); // Contenido celular-3rd Grid Label Content2C = New Label (2, 2, "Tiempo de registro", TitleFormat2); // Contenido celular-3rd Grid Label Content2D = nueva etiqueta (3, 2, "Módulo de operación", TitleFormat2); // Contenido celular-4th Grid Label Content2e = New Label (4, 2, "Contenido de operación", TitleFormat2); // Contenido celular-5º contenido de etiqueta de cuadrícula2F = nueva etiqueta (5, 2, "Acción de operación", TitleFormat2); // Contenido celular-6º contenido de etiqueta de cuadrícula2g = nueva etiqueta (6, 2, "IP del operador", TitleFormat2); // Contenido celular-7ª etiqueta de cuadrícula Content2H = nueva etiqueta (7, 2, "Organización de operaciones", TitleFormat2); // Contenido celular-8a etiqueta de cuadrícula contenido2i = nueva etiqueta (8, 2, "nota", titleFormat2); // contenido celular-9a hoja de cuadrícula.mergecells (0, 1, 8, 1); /* sheet.merGecells(0, 2, 0, 4); // La ubicación, qué fila y columna están en la fila, es decir, la posición de la fusión, si no hay fusión, no puede escribirla; (Aquí está la línea de inicio 3 a la fila 5, la columna 1) Hoja. Mergecells (1, 2, 1, 4); // La ubicación, qué fila y columna están en la fila, es decir, la posición de la fusión, si no hay fusión, no puede escribirla; (Aquí está la línea de inicio 3 a la fila 5, la columna 2) Hoja. Mergecells (2, 2, 2, 4); // La ubicación, qué fila y columna están en la fila, es decir, la posición fusionada, si no hay fusión, no puede escribirla; (Aquí está la línea de inicio 3 a la fila 5, columna 3) Hoja. Mergecells (3, 2, 3, 4); // La ubicación, qué fila y columna están en la fila, es decir, la posición fusionada, si no hay fusión, no puede escribirla; (Aquí está la línea de inicio 3 a la fila 5, columna 4) Hoja. Mergecells (4, 2, 4, 4); // La ubicación, qué fila y columna están en la fila, es decir, la posición fusionada, si no hay fusión, no puede escribirla; (Aquí está la línea de inicio 3 a la fila 5, columna 5) Hoja. Mergecells (5, 2, 5, 4); // La ubicación, qué fila y columna están en la fila, es decir, la posición fusionada, si no hay fusión, no puede escribirla; (Aquí está la línea de inicio 3 a la fila 5, columna 6) Hoja. Mergecells (6, 2, 6, 4); // La ubicación, qué fila y columna están en la fila, es decir, la posición fusionada, si no hay fusión, no puede escribirla; (Aquí está la línea de inicio 3 a la fila 5, columna 7) Hoja. Mergecells (7, 2, 7, 4); // La ubicación, qué fila y columna están en la fila, es decir, la posición fusionada, si no hay fusión, no puede escribirla; (Aquí está la línea de inicio 3 a la fila 5, columna 8) Hoja. Mergecells (8, 2, 8, 4); // La ubicación, qué fila y columna están en la fila, es decir, la posición de la fusión. Si no hay fusión, no puede escribirla; (Aquí está la línea de inicio 3 a la fila 5, columna 9) Hoja. Mergecells (9, 2, 9, 4); // La ubicación, qué fila y columna están en la fila, es decir, la posición de la fusión. Si no hay fusión, no puede escribirla; (Aquí está la línea de inicio 3 a la fila 5, columna 10) Hoja. Mergecells (10, 2, 12, 3); // La ubicación, qué fila y columna están en la fila, es decir, la posición de la fusión. Si no hay fusión, no puede escribirla; (Aquí está la línea de inicio 3 a la fila 4, columna 11-13) Hoja. Mergecells (13, 2, 15, 3); // La ubicación, qué fila y columna están en la primera fila, es decir, la posición fusionada, si no hay fusión, no puede escribirla; (Aquí está la línea de inicio 3 a la fila 4, columnas 14-16) Hoja. Mergecells (16, 2, 16, 4); // La ubicación, qué fila y columna están en la primera fila, es decir, la posición fusionada, si no hay fusión, no puede escribirla; (Aquí está la línea de inicio 3 a la fila 5, columna 17) Hoja. Mergecells (17, 2, 17, 4); // La ubicación, qué fila y columna están en la primera fila, es decir, la posición fusionada, si no hay fusión, no puede escribirla; (Aquí está la línea de inicio 3 a la fila 5, columna 18) Hoja. Mergecells (18, 2, 18); // La ubicación, qué fila y columna están en la primera fila, es decir, la posición fusionada. Si no hay fusión, no puede escribirla; (Aquí está la línea de inicio 3 a 5, columna 19) */ sheet.addcell (content2a); // Agregar la primera hoja de información de celda. Addcell (content2b); // Agregar la segunda hoja de información de celda. Addcell (content2c); // Agregar la tercera hoja de información de celda. Addcell (content2d); // Agregar la hoja de información de la cuarta celda. Addcell (content2e); // Agregar la hoja de información de la quinta celda. Addcell (content2f); // Agregar la Hoja de información de la sexta celda. Addcell (content2g); // Agregue la Séptima Hoja de Información de Cell.AddCell (Content2H); // Agregar la 8a hoja de información de celda. Addcell (content2i); // Agregue la Información de la Novena Celular WRITITYFONT WF = New WittitionFont (WrititableFont.CreateFont ("安安"), 11, WittitedFont.No_Bold, False, Jxl.Format.underlinestyle.no_underline, jxl.format.colour.black); // Establecer el estilo de fuente de celda WRITABLECELLFORMAT wcf = new WritableCellFormat (WF); // Agregar fuente de celda WCF.SetBorder (border.all, borderlinestyle.thin); // Establecer el borde-línea sólida; wcf.setVerticalAlignment (verticalAlignment.centre); // establecer alineación vertical wcf.setalignment (alineación.centre); // Establecer alineación de centrado horizontal del texto; wcf.setwrap (verdadero); // Línea automática envuelve WRITITYFONT WF1 = new WittitionFont (WrititableFont.CreateFont ("安体"), 11, WittitionFont.No_Bold, falso, jxl.format.underlinestyle.no_underline, jxl.format.colour.black); // establecer el estilo de fuente de celda WritableCellFormat WCF1 = new WritableCellFormat (WF1); // Agregar fuente de celda WCF1.SetBorder (Border.Left, BorderLinestyle.Thin); // establecer la línea border-sólida; WCF1.SetVerticalAlignment (verticalAlignment.centre); // establecer la alineación vertical wcf1.setalignment (alineación.centre); // Establecer alineación de centrado horizontal del texto; // Información obtenida por la siguiente base de datos de bucle int c = 1; // el número de línea de Excel utilizado para el bucle iterador it = list.iterator (); while (it.hasnext ()) {logs tc = (logs) it.next (); DateFormat dfmt = new SimpleDateFormat ("yyyy.mm"); Cadena xh = string.ValueOf (c); if (xh == null) {xh = ""; } Etiqueta content0 = nueva etiqueta (0, c+2, xh, wcf); // Número de serie name de cadena = tc.getusername (); if (name == null) {name = ""; } Etiqueta content1 = nueva etiqueta (1, c+2, nombre, wcf); // String de nombre de usuario xrpresent = tc.getLogtime (); if (xrPresent == null) {xrpresent = ""; } Etiqueta content2 = nueva etiqueta (2, c+2, xrpresent, wcf); // registrar la cadena de tiempo czmodel = tc.getModel (); if (czmodel == null) {czmodel = ""; } Etiqueta content3 = nueva etiqueta (3, c+2, czmodel, wcf); // Operation Module String Sex = tc.getContent (); if (sex == null) {sex = ""; } Etiqueta content4 = nueva etiqueta (4, c+2, sexo, wcf); // Operation Content String CUMPLEABLE = TC.GETOPERATE (); if (cumpleaños == null) {cumpleaños = ""; } Etiqueta content5 = nueva etiqueta (5, c+2, cumpleaños, wcf); // Operation Action String nation = tc.getip (); if (nation == null) {nation = ""; } Etiqueta content6 = nueva etiqueta (6, c+2, nación, wcf); // operador ip string origin = tc.getorgname (); if (origin == null) {origin = ""; } Etiqueta content7 = nueva etiqueta (7, c+2, origen, wcf); // u organización cadena bplace = tc.getRemark (); if (bplace == null) {bplace = ""; } Etiqueta content8 = nueva etiqueta (8, c+2, bplace, wcf); // observar cadena abc = ""; Label Content9 = nueva etiqueta (9, C+2, ABC, WCF1); // Hoja de observación. STSETROWVIEW (C+2, 600); // establecer la hoja de altura de línea. SetRowView (C+2, 600); sheet.setRowView (C+2, 600); sheet.setRowView (C+2, 600); sheet.setRowView (C+2, 600); sheet.setRowView (C+2, 600); sheet.setRowView (C+2, 600); sheet.setRowView (C+2, 600); sheet.setRowView (C+2, 600); sheet.mergecells (0, c+2, 0, c+2); // MergeCells (1, C+2, 0, C+2); // MERGECELLS (A, B, C, D) Hoja de funciones de fusión celular. // una hoja de número de columna de celda. // Hoja de números de línea de celda B.mergecells (4, C+2, 0, C+2); // c comenzando desde la celda [A, B], fusione la hoja de columna C.Mergecells (5, C+2, 0, C+2); // D desde la celda [a, b], fusionarse hasta la fila D de la hoja. sheet.mergecells (7, c+2, 0, c+2); sheet.mergecells (8, c+2, 0, c+2); sheet.mergecells (9, c+2, 0, c+2); sheet.addcell (content0); sheet.addcell (content1); sheet.addcell (content2); sheet.addcell (content3); sheet.addcell (content4); sheet.addcell (content5); sheet.addcell (content6); sheet.addcell (content7); sheet.addcell (content8); sheet.addcell (content9); c ++; } wbook.write (); // escribir en el archivo wbook.close (); os.close (); } catch (Exception e) {Throw New PaikeException ("Error de exportación de archivo"); }}La explicación de ejemplo anterior de la exportación de datos de JXL a Excel es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.