首页
登录 | 注册

poi获取excel2003图表以及相关属性

poi获取excel图片的方法是:

List<HSSFPictureData> pictures = workbook.getAllPictures();
本以为获取图表的方法应该是类似的。结果在HSSFWorkbook和HSSFSheet中都没有找到。

然后直接在HSSF包中找类文件,发现了图表类HSSFChart,查看HSSFChart的源码,发现了一个方法:

public static HSSFChart[] getSheetCharts(HSSFSheet sheet)

下面就好办了,代码如下:

    public static void main(String[] args) throws Exception{
        File excelFile = new File("e:/a.xls");
        HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(excelFile));
        //获取第一个sheet
        HSSFSheet sheet = workbook.getSheet(workbook.getSheetName(0));
        //获取sheet的所有图表
        HSSFChart[] charts = HSSFChart.getSheetCharts(sheet);
        for (HSSFChart chart : charts) {
            //poi获取excel图表标题
            String title = chart.getChartTitle();
            //poi获取excel图表高度
            int height = chart.getChartHeight();
            //poi获取excel图表宽度
            int width = chart.getChartWidth();
            //poi获取excel图表横向位置
            int x = chart.getChartX();
            //poi获取excel图表纵向位置
            int y = chart.getChartY();
            //poi获取excel图表类型
            HSSFChart.HSSFChartType type = chart.getType();
            //poi获取excel图表系列
            HSSFChart.HSSFSeries[] series = chart.getSeries();
            for (HSSFChart.HSSFSeries se : series) {
                //poi获取excel图表的值区域
                CellRangeAddressBase valueRange = se.getValuesCellRange();
                System.out.println("数据起始列:" + valueRange.getFirstColumn());
                System.out.println("数据起始行:" + valueRange.getFirstRow());
                System.out.println("数据结束列:" + valueRange.getLastColumn());
                System.out.println("数据结束行:" + valueRange.getLastRow());
                //poi获取excel图表category区域
                CellRangeAddressBase categoryRange = se.getCategoryLabelsCellRange();
                System.out.println("名称起始列:" + categoryRange.getFirstColumn());
                System.out.println("名称起始行:" + categoryRange.getFirstRow());
                System.out.println("名称结束列:" + categoryRange.getLastColumn());
                System.out.println("名称结束行:" + categoryRange.getLastRow());
            }
        }
    }




2020 jeepxie.net webmaster#jeepxie.net
10 q. 0.009 s.
京ICP备10005923号