使用POI 和JFreeChart 在Excel中生成统计图的代码如下:
(具体jar包网上有)
public class Test_1 {
private static FileOutputStream fileOut = null;
//Excel生成的路径
private static String excel_Path = "D:/test.xls";
public static void main(String[] args) {
//创建JFreeChart
JFreeChart chart =ChartFactory.createBarChart("Test", "X", "Y", getCategoryDataset(), PlotOrientation.VERTICAL, true, false, false);
LegendTitle legend = chart.getLegend(0);
legend.setItemFont(new Font("宋体", Font.TYPE1_FONT, 16));
//将图片输出到输出流
ByteArrayOutputStream handlePicture = new ByteArrayOutputStream();
try {
//将ChartUtilities生成的文件输出到ByteArrayOutputStream中去
ChartUtilities.writeChartAsJPEG(handlePicture, chart, 800, 600);
} catch (IOException e) {
e.printStackTrace();
}
//创建一个工作簿
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("sheet1");
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 200, 150, (short) 1, 1, (short) 15, 25);
//插入图片
patriarch.createPicture(anchor, wb.addPicture(handlePicture.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
//写入excel文件
try {
fileOut = new FileOutputStream(excel_Path);
wb.write(fileOut);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fileOut != null) {
try {
fileOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
private static CategoryDataset getCategoryDataset() {
DefaultCategoryDataset dcd=new DefaultCategoryDataset();
dcd.addValue(1, "a", "a-1");
dcd.addValue(2, "a", "a-2");
dcd.addValue(3, "a", "a-3");
dcd.addValue(4, "a", "a-4");
return dcd;
}
}