我本身就有input-1xlsx的Excel文件文件中本身就包含P1工作表我要的只是一个读取内容然后按照我的要求制作一个折线图就好Java代码我的POI版本为522我的要求将A1-A127做为横向坐标轴横向坐标轴格式为时间C1-C127为竖向坐标轴生成的折线图保存在P1工作表就可以了
以下是使用Apache POI库读取Excel文件并生成折线图的Java代码示例:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import java.io.*;
public class ExcelLineChartExample {
public static void main(String[] args) {
try {
// 读取Excel文件
FileInputStream file = new FileInputStream(new File("input-1.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheet("P1");
// 创建折线图
XSSFDrawing drawing = sheet.createDrawingPatriarch();
XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 5, 10, 15);
XSSFChart chart = drawing.createChart(anchor);
XSSFChartLegend legend = chart.getOrCreateLegend();
legend.setPosition(LegendPosition.BOTTOM);
// 设置横向坐标轴
XDDFCategoryAxis xAxis = chart.createCategoryAxis(AxisPosition.BOTTOM);
xAxis.setTitle("时间");
XSSFChartUtil.setDateFormatAxis(xAxis);
// 设置竖向坐标轴
XDDFValueAxis yAxis = chart.createValueAxis(AxisPosition.LEFT);
yAxis.setTitle("数值");
// 创建数据系列
XDDFLineChartData data = (XDDFLineChartData) chart.createData(ChartTypes.LINE, xAxis, yAxis);
XDDFDataSource<String> xData = XDDFDataSourcesFactory.fromStringCellRange(sheet, new CellRangeAddress(0, 126, 0, 0));
XDDFNumericalDataSource<Double> yData = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(0, 126, 2, 2));
XDDFLineChartData.Series series = (XDDFLineChartData.Series) data.addSeries(xData, yData);
series.setTitle("数据", null);
// 绘制折线图
chart.plot(data);
// 保存Excel文件
FileOutputStream outputFile = new FileOutputStream(new File("input-1.xlsx"));
workbook.write(outputFile);
outputFile.close();
System.out.println("折线图生成成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
请确保将POI库的JAR文件添加到项目的类路径中。此示例代码假设Excel文件中的时间数据位于A1-A127单元格,数值数据位于C1-C127单元格。生成的折线图将保存在P1工作表中。请根据需要进行调整。
原文地址: https://www.cveoy.top/t/topic/ig2W 著作权归作者所有。请勿转载和采集!