Java para análisis de datos en Excel

Resumen: Este artículo fue creado y publicado originalmente por el equipo técnico de Grape City en los Nuggets. Indique la fuente de la reimpresión: sitio web oficial de Grape City , Grape City proporciona a los desarrolladores herramientas, soluciones y servicios de desarrollo profesional para empoderar a los desarrolladores.

Hace algún tiempo, Taobao lanzó un módulo llamado "Taobao Life", donde puede ver los registros de consumo desde el momento en que registró su cuenta de Taobao. Después de pensarlo detenidamente, ahora parece que a WeChat y Taobao les gusta registrar el pago y el consumo de los usuarios. de esta manera funciona. Sin embargo, esta función de mostrar registros de consumo hace que las personas se sientan mucho más cómodas. De esta manera, todos pueden verificar los registros de consumo anteriores en cualquier momento y en cualquier lugar. A veces es necesario verificar la cuenta, y puede ver a dónde se fue el dinero hojeando el teléfono, y el flujo de cada dinero se puede ver muy claramente. . Dado que esta cosa es tan fácil de usar, ¿puedo también desarrollar una herramienta de análisis similar, para poder usarla para registrar cada parte de la vida? Debido a la naturaleza de mi trabajo, estoy más familiarizado con Excel. Lo primero que pensé fue si es posible utilizar una herramienta de visualización de tablas para realizar esta función.

Simplemente haga lo que dice, primero busque en Internet para encontrar algunos estilos de herramientas de visualización en Excel y vea que los gráficos (gráficos de columnas, gráficos de barras, etc.) y los gráficos dinámicos son más populares en Excel. Debido a que los gráficos son una herramienta que se usa comúnmente, impulsado por la curiosidad, Baidu echó un vistazo a "Cómo usar el código para hacer un gráfico dinámico en una tabla". Después de navegar, descubrí que hay muchos lenguajes que pueden Implementación (Python, Java, JavaScript, .net, etc.). Como estoy más familiarizado con el lenguaje Java, continué con "Cómo usar Java para hacer una tabla dinámica en Excel" de Baidu. Descubrí que esto se puede lograr usando la biblioteca Apache POI :

 
 

Java

copiar codigo

import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.*; import java.io.FileOutputStream; import java.io.IOException; public class PivotTableExample { public static void main(String[] args) throws IOException { // 创建工作簿 Workbook workbook = new XSSFWorkbook(); // 创建工作表 Sheet sheet = workbook.createSheet("Data"); // 输入数据 Row headingRow = sheet.createRow(0); headingRow.createCell(0).setCellValue("Category"); headingRow.createCell(1).setCellValue("Value"); Row dataRow1 = sheet.createRow(1); dataRow1.createCell(0).setCellValue("A"); dataRow1.createCell(1).setCellValue(10); Row dataRow2 = sheet.createRow(2); dataRow2.createCell(0).setCellValue("B"); dataRow2.createCell(1).setCellValue(20); Row dataRow3 = sheet.createRow(3); dataRow3.createCell(0).setCellValue("A"); dataRow3.createCell(1).setCellValue(15); // 创建数据透视表 XSSFPivotTable pivotTable = ((XSSFSheet) sheet).createPivotTable(new AreaReference("A1:B3", SpreadsheetVersion.EXCEL2007), new CellReference("D5")); // 设置行标签 pivotTable.addRowLabel(0); // 设置值字段 pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 1, "Sum of Value"); // 保存Excel文件 FileOutputStream fileOut = new FileOutputStream("pivotTable.xlsx"); workbook.write(fileOut); fileOut.close(); System.*out*.println("数据透视表已创建并保存到文件!"); } }

Además de usar la biblioteca Apache POI, también encontré un software comercial GcExcel.Como no sé mucho sobre esto, simplemente conversé sobre GcExcel.

Después de verificar, descubrí que, de manera similar a la biblioteca Apache POI, GcExcel también es una biblioteca de operación de tablas basada en Java, por lo que con una actitud curiosa, busqué "Java implementa la tabla dinámica GcExcel" en Baidu. Encontré una guía de estudio de GcExcel , que contiene código fuente y explicaciones del código. De acuerdo con el tutorial introductorio que se encuentra dentro, escribí una pequeña demostración que implementa la tabla dinámica (debido a que el código completo es demasiado largo, solo se intercepta una parte):

Los zapatos para niños que quieran el código completo se pueden descargar desde Gitee o Github :

 
 

Java

copiar codigo

public class Main { public static void main(String[] args){ Workbook workbook = new Workbook(); //创建一个WorkSheet的对象 IWorksheet worksheet = workbook.getWorksheets().get(0); //-----------------------------设置数据值------------------------------ worksheet.getRange("B3:C7").setValue(new Object[][]{ {"ITEM", "AMOUNT"}, {"Income 1", 2500}, {"Income 2", 1000}, {"Income 3", 250}, {"Other", 250}, }); worksheet.getRange("B10:C23").setValue(new Object[][]{ {"ITEM", "AMOUNT"}, {"Rent/mortgage", 800}, {"Electric", 120}, {"Gas", 50}, {"Cell phone", 45}, {"Groceries", 500}, {"Car payment", 273}, {"Auto expenses", 120}, {"Student loans", 50}, {"Credit cards", 100}, {"Auto Insurance", 78}, {"Personal care", 50}, {"Entertainment", 100}, {"Miscellaneous", 50}, }); //合并单元格 worksheet.getRange("B2:C2").merge(); worksheet.getRange("B2").setValue("MONTHLY INCOME"); worksheet.getRange("B9:C9").merge(); worksheet.getRange("B9").setValue("MONTHLY EXPENSES"); worksheet.getRange("E2:G2").merge(); worksheet.getRange("E2").setValue("PERCENTAGE OF INCOME SPENT"); worksheet.getRange("E5:G5").merge(); worksheet.getRange("E5").setValue("SUMMARY"); worksheet.getRange("E3:F3").merge(); worksheet.getRange("E9").setValue("BALANCE"); worksheet.getRange("E6").setValue("Total Monthly Income"); worksheet.getRange("E7").setValue("Total Monthly Expenses"); //--------------------------------设置形状-------------------------------- IShape shape = worksheet.getShapes().addChart(ChartType.*ColumnClustered*, 339, 247, 316.5, 346); shape.getChart().getChartArea().getFormat().getLine().setTransparency(1); shape.getChart().getColumnGroups().get(0).setOverlap(0); shape.getChart().getColumnGroups().get(0).setGapWidth(37); IAxis category_axis = shape.getChart().getAxes().item(AxisType.*Category*); category_axis.getFormat().getLine().getColor().setRGB(Color.*GetBlack*()); category_axis.getTickLabels().getFont().setSize(11); category_axis.getTickLabels().getFont().getColor().setRGB(Color.*GetBlack*()); IAxis series_axis = shape.getChart().getAxes().item(AxisType.*Value*); series_axis.getFormat().getLine().setWeight(1); series_axis.getFormat().getLine().getColor().setRGB(Color.*GetBlack*()); series_axis.getTickLabels().setNumberFormat("\$\#\#\#0"); series_axis.getTickLabels().getFont().setSize(11); series_axis.getTickLabels().getFont().getColor().setRGB(Color.*GetBlack*()); ISeries chartSeries = shape.getChart().getSeriesCollection().newSeries(); chartSeries.setFormula("=SERIES(\"Simple Budget\",{"Income\","Expenses\"},'Sheet1'!$G$6:$G$7,1)"); chartSeries.getPoints().get(0).getFormat().getFill().getColor().setRGB(Color.*FromArgb*(176, 21, 19)); chartSeries.getPoints().get(1).getFormat().getFill().getColor().setRGB(Color.*FromArgb*(234, 99, 18)); chartSeries.getDataLabels().getFont().setSize(11); chartSeries.getDataLabels().getFont().getColor().setRGB(Color.*GetBlack*()); chartSeries.getDataLabels().setShowValue(true); chartSeries.getDataLabels().setPosition(DataLabelPosition.*OutsideEnd*); workbook.save("tutorial.xlsx"); } }

Estilo final de Excel:

A través de los experimentos anteriores, tanto Apache POI como GcExcel se pueden usar para implementar tablas dinámicas en Excel, y puede elegir el método adecuado según las necesidades de su proyecto o proyecto.

Enlace de extensión:

Cómo hacer que su sistema también tenga la función de "tabla dinámica"

¡Las tablas dinámicas están en vivo! Cómo realizar esta poderosa función de análisis de datos en el front-end puro

Tabla dinámica de Excel frontal pura para realizar la aplicación del estado de pérdidas y ganancias

Supongo que te gusta

Origin blog.csdn.net/BASK2312/article/details/131662277
Recomendado
Clasificación