java绘制excel图表
时间: 2023-07-07 21:30:35 浏览: 50
Java可以使用Apache POI库来创建并绘制Excel图表。以下是一个简单的例子:
```java
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import java.io.*;
public class ExcelChartExample {
public static void main(String[] args) throws IOException {
//创建工作簿
XSSFWorkbook workbook = new XSSFWorkbook();
//创建工作表
XSSFSheet sheet = workbook.createSheet("Chart");
//创建数据
Object[][] data = {
{"Month", "Sales"},
{"Jan", 2000},
{"Feb", 3000},
{"Mar", 5000},
{"Apr", 4000},
{"May", 6000}
};
//将数据写入工作表
int rowNum = 0;
for (Object[] rowData : data) {
XSSFRow row = sheet.createRow(rowNum++);
int colNum = 0;
for (Object cellData : rowData) {
XSSFCell cell = row.createCell(colNum++);
if (cellData instanceof String) {
cell.setCellValue((String) cellData);
} else if (cellData instanceof Integer) {
cell.setCellValue((Integer) cellData);
}
}
}
//创建饼图
XSSFDrawing drawing = sheet.createDrawingPatriarch();
XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 4, 0, 10, 10);
XSSFChart chart = drawing.createChart(anchor);
XSSFChartLegend legend = chart.getOrCreateLegend();
legend.setPosition(LegendPosition.RIGHT);
XSSFChartAxis xAxis = chart.getChartAxisFactory().createCategoryAxis(AxisPosition.BOTTOM);
XSSFValueAxis yAxis = chart.getChartAxisFactory().createValueAxis(AxisPosition.LEFT);
yAxis.setCrosses(AxisCrosses.AUTO_ZERO);
XSSFPieChartData dataChart = chart.getChartDataFactory().createPieChartData();
ChartDataSource<String> xs = DataSources.fromStringCellRange(sheet, new CellRangeAddress(1, 5, 0, 0));
ChartDataSource<Number> ys = DataSources.fromNumericCellRange(sheet, new CellRangeAddress(1, 5, 1, 1));
dataChart.addSeries(xs, ys);
chart.plot(dataChart, new ChartAxis[]{xAxis, yAxis});
//将工作簿写入文件
FileOutputStream outputStream = new FileOutputStream("ChartExample.xlsx");
workbook.write(outputStream);
workbook.close();
}
}
```
在这个例子中,我们创建了一个工作簿和一个工作表,并将数据写入工作表。然后,我们创建了一个饼图,并将它添加到工作表中。最后,我们将工作簿写入文件。
你可以根据自己的需求修改代码来创建不同类型的图表。