• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

java poi生成excel折线图、柱状图、饼图、动态列表

武飞扬头像
`倔强男孩`
帮助1

实现效果

学新通

学新通

学新通

学新通 

测试类

  1.  
     
  2.  
    public class ChartTest {
  3.  
     
  4.  
    // 开始行
  5.  
    public static int chartRowStart = 3;
  6.  
    // 结束行
  7.  
    public static int chartRowEnd = 20;
  8.  
     
  9.  
    public static ChartPosition chartPosition;
  10.  
     
  11.  
    public static void main(String[] args) throws IOException {
  12.  
    // 填充数据
  13.  
    XSSFWorkbook workbook = createExcel();
  14.  
    FileOutputStream fileOut = null;
  15.  
    try {
  16.  
    // 将输出写入excel文件
  17.  
    String filename = UUID.randomUUID() ".xlsx";
  18.  
    fileOut = new FileOutputStream(filename);
  19.  
    workbook.write(fileOut);
  20.  
    DesktopHelpers.openFile(filename);
  21.  
    } catch (Exception e) {
  22.  
    e.printStackTrace();
  23.  
    } finally {
  24.  
    workbook.close();
  25.  
    if (fileOut != null) {
  26.  
    fileOut.close();
  27.  
    }
  28.  
    }
  29.  
    }
  30.  
     
  31.  
    public static XSSFWorkbook createExcel() {
  32.  
    XSSFWorkbook workbook = new XSSFWorkbook();
  33.  
    XSSFSheet sheet = workbook.createSheet();
  34.  
    //-------------------------折线图--------------------------
  35.  
    List<LineChart> lineCharts = initLineChart();
  36.  
    for (LineChart lineChart : lineCharts) {
  37.  
    // 图表位置(左上角坐标,右下角坐标) 左上角坐标的(列,行),(右下角坐标)列,行,偏移量均为0
  38.  
    chartPosition = new ChartPosition()
  39.  
    .setRow1(chartRowStart)
  40.  
    .setCol1(0)
  41.  
    .setRow2(chartRowEnd)
  42.  
    .setCol2(lineChart.getXAxisList().size() 3);
  43.  
    ChartUtils.createLine(sheet, chartPosition, lineChart);
  44.  
    }
  45.  
    chartRowStart = chartRowEnd 2;
  46.  
    chartRowEnd = chartRowStart 20;
  47.  
     
  48.  
    //-------------------------柱状图--------------------------
  49.  
    XSSFRow row = sheet.createRow(chartRowStart);
  50.  
    row.setHeight((short) 500);
  51.  
    XSSFCell cell0 = row.createCell(0);
  52.  
    cell0.setCellValue("测试柱状图");
  53.  
    cell0.setCellStyle(ChartUtils.tableNameCellStyle(workbook));
  54.  
    sheet.addMergedRegion(new CellRangeAddress(chartRowStart, chartRowStart, 0, 2));
  55.  
    // 获取数据
  56.  
    List<PieChart> pieCharts = initPieChart();
  57.  
    for (PieChart pieChart : pieCharts) {
  58.  
    // 图表位置(左上角坐标,右下角坐标) 左上角坐标的(列,行),(右下角坐标)列,行,偏移量均为0
  59.  
    chartPosition = new ChartPosition()
  60.  
    .setRow1(chartRowStart 1)
  61.  
    .setCol1(0)
  62.  
    .setRow2(chartRowEnd)
  63.  
    .setCol2(8);
  64.  
    ChartUtils.createBar(sheet, chartPosition, pieChart);
  65.  
    }
  66.  
    chartRowStart = chartRowEnd 2;
  67.  
    chartRowEnd = chartRowStart 15;
  68.  
     
  69.  
    //-------------------------饼图--------------------------
  70.  
    XSSFRow row1 = sheet.createRow(chartRowStart);
  71.  
    row1.setHeight((short) 500);
  72.  
    XSSFCell cell1 = row1.createCell(0);
  73.  
    cell1.setCellValue("测试饼图");
  74.  
    cell1.setCellStyle(ChartUtils.tableNameCellStyle(workbook));
  75.  
    sheet.addMergedRegion(new CellRangeAddress(chartRowStart, chartRowStart, 0, 2));
  76.  
    // 获取数据
  77.  
    for (PieChart pieChart : pieCharts) {
  78.  
    // 图表位置(左上角坐标,右下角坐标) 左上角坐标的(列,行),(右下角坐标)列,行,偏移量均为0
  79.  
    chartPosition = new ChartPosition()
  80.  
    .setRow1(chartRowStart 1)
  81.  
    .setCol1(0)
  82.  
    .setRow2(chartRowEnd)
  83.  
    .setCol2(8);
  84.  
    ChartUtils.createPie(sheet, chartPosition, pieChart);
  85.  
    }
  86.  
    chartRowStart = chartRowEnd 2;
  87.  
    chartRowEnd = chartRowStart 15;
  88.  
     
  89.  
    //-------------------------Excel--------------------------
  90.  
    // 获取列表数据
  91.  
    ChartUtils.createTable(chartRowStart, workbook, sheet);
  92.  
     
  93.  
    // 去除网格线
  94.  
    // sheet.setDisplayGridlines(false);
  95.  
    return workbook;
  96.  
    }
  97.  
     
  98.  
    /**
  99.  
    * 折线图
  100.  
    * @return
  101.  
    */
  102.  
    public static List<LineChart> initLineChart() {
  103.  
    List<LineChart> lineCharts = new ArrayList<>();
  104.  
    lineCharts.add(new LineChart()
  105.  
    .setChartTitle("折线图")
  106.  
    .setTitleList(Arrays.asList("2020年", "2021年"))
  107.  
    .setDataList(Arrays.asList(Arrays.asList(1, 2, 3, 3, 1, 6, 3, 7, 12, 11, null, null), Arrays.asList(5, 4, 0, null, 12, 3, 8, 9, 11, 9, 2, 1)))
  108.  
    .setXAxisList(Arrays.<Object>asList("1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月")));
  109.  
    return lineCharts;
  110.  
    }
  111.  
     
  112.  
    /**
  113.  
    * 饼图
  114.  
    * @return
  115.  
    */
  116.  
    public static List<PieChart> initPieChart() {
  117.  
    List<PieChart> pieCharts = new ArrayList<>();
  118.  
    String[] name = {"北京", "上海", "广东", "深圳"};
  119.  
    String[] title = {"城市占比"};
  120.  
    Integer[] data1 = {15, 3, 5, 9};
  121.  
    for (int i = 0; i < title.length; i ) {
  122.  
    PieChart pieChart = new PieChart();
  123.  
    pieChart.setTitleList(Arrays.asList(name));
  124.  
    pieChart.setTitleName(title[i]);
  125.  
    pieChart.setDataList(Arrays.asList(data1));
  126.  
    pieCharts.add(pieChart);
  127.  
    }
  128.  
    return pieCharts;
  129.  
    }
  130.  
    }
学新通

实体类

  1.  
    @Accessors(chain = true)
  2.  
    @Data
  3.  
    public class ChartPosition {
  4.  
    /**
  5.  
    * 图表的左上角坐标列
  6.  
    */
  7.  
    private int col1;
  8.  
    /**
  9.  
    * 图表的左上角坐标行
  10.  
    */
  11.  
    private int row1;
  12.  
    /**
  13.  
    * 图表的右下角坐标列
  14.  
    */
  15.  
    private int col2;
  16.  
    /**
  17.  
    * 图表的右下角坐标行t
  18.  
    */
  19.  
    private int row2;
  20.  
     
  21.  
    /**
  22.  
    * 下面的为偏移量均设置为0
  23.  
    */
  24.  
    private int dx1 = 0;
  25.  
     
  26.  
    private int dy1 = 0;
  27.  
     
  28.  
    private int dx2 = 0;
  29.  
     
  30.  
    private int dy2 = 0;
  31.  
     
  32.  
    }
学新通
  1.  
    @Data
  2.  
    @Accessors(chain = true)
  3.  
    public class LineChart {
  4.  
     
  5.  
    /**
  6.  
    * 图表的名称
  7.  
    */
  8.  
    private String chartTitle;
  9.  
     
  10.  
    /**
  11.  
    * 每条折线的名称
  12.  
    */
  13.  
    private List<String> titleList;
  14.  
     
  15.  
    /**
  16.  
    * 每条折线对应的数据 这里的类型根据自己的实际情况给
  17.  
    */
  18.  
    private List<List<Integer>> dataList;
  19.  
     
  20.  
    /**
  21.  
    * x轴 这里的类型根据自己的实际情况给
  22.  
    */
  23.  
    private List<Object> xAxisList;
  24.  
    }
学新通
  1.  
    @Data
  2.  
    @Accessors(chain = true)
  3.  
    public class PieChart {
  4.  
     
  5.  
    /**
  6.  
    * 饼图每块的名称
  7.  
    */
  8.  
    private List<String> titleList;
  9.  
     
  10.  
    /**
  11.  
    * 饼图每块的数据 这里的类型根据自己的实际情况给
  12.  
    */
  13.  
    private List<Integer> dataList;
  14.  
     
  15.  
    /**
  16.  
    * 饼图标题名称
  17.  
    */
  18.  
    private String titleName;
  19.  
    }
学新通

 工具类

  1.  
    public class ChartUtils {
  2.  
    private static XSSFChart createDrawingPatriarch(XSSFSheet sheet, ChartPosition chartPosition, String chartTitle) {
  3.  
    //创建一个画布
  4.  
    XSSFDrawing drawing = sheet.createDrawingPatriarch();
  5.  
    //前偏移量四个默认0
  6.  
    XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, chartPosition.getCol1(), chartPosition.getRow1(), chartPosition.getCol2(), chartPosition.getRow2());
  7.  
    //创建一个chart对象
  8.  
    XSSFChart chart = drawing.createChart(anchor);
  9.  
    //标题
  10.  
    chart.setTitleText(chartTitle);
  11.  
    //标题是否覆盖图表
  12.  
    chart.setTitleOverlay(false);
  13.  
    return chart;
  14.  
    }
  15.  
     
  16.  
    /**
  17.  
    * 柱状图
  18.  
    * @param sheet
  19.  
    * @param chartPosition
  20.  
    * @param pieChart
  21.  
    */
  22.  
    public static void createBar(XSSFSheet sheet,ChartPosition chartPosition, PieChart pieChart){
  23.  
    String titleName = pieChart.getTitleName();
  24.  
    List<String> titleList = pieChart.getTitleList();
  25.  
    List<Integer> dataList = pieChart.getDataList();
  26.  
    XSSFChart chart = createDrawingPatriarch(sheet, chartPosition, titleName);
  27.  
    //分类轴标(X轴),标题位置
  28.  
    XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM);
  29.  
    //值(Y轴)轴,标题位置
  30.  
    XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT);
  31.  
    //分类轴标数据
  32.  
    XDDFDataSource<String> xData = XDDFDataSourcesFactory.fromArray(titleList.toArray(new String[]{}));
  33.  
    XDDFNumericalDataSource<Integer> values = XDDFDataSourcesFactory.fromArray(dataList.toArray(new Integer[]{}));
  34.  
    //bar:条形图
  35.  
    XDDFBarChartData bar = (XDDFBarChartData) chart.createData(ChartTypes.BAR, bottomAxis, leftAxis);
  36.  
    leftAxis.setCrossBetween(AxisCrossBetween.BETWEEN);
  37.  
    //设置为可变颜色
  38.  
    bar.setVaryColors(true);
  39.  
    //条形图方向,纵向/横向:纵向
  40.  
    bar.setBarDirection(BarDirection.COL);
  41.  
    //图表加载数据,条形图1
  42.  
    XDDFBarChartData.Series series1 = (XDDFBarChartData.Series) bar.addSeries(xData, values);
  43.  
    //条形图例标题
  44.  
    XDDFSolidFillProperties fill = new XDDFSolidFillProperties(XDDFColor.from(PresetColor.BLUE_VIOLET));
  45.  
    //条形图,填充颜色
  46.  
    series1.setFillProperties(fill);
  47.  
    //绘制
  48.  
    chart.plot(bar);
  49.  
    }
  50.  
     
  51.  
    /**
  52.  
    * 创建饼图
  53.  
    *
  54.  
    * @param sheet 图表
  55.  
    * @see com.gideon.entity.PieChart 饼图数据的封装
  56.  
    * @see com.gideon.entity.ChartPosition 饼图的坐标位置
  57.  
    */
  58.  
    public static void createPie(XSSFSheet sheet, ChartPosition chartPosition, PieChart pieChart) {
  59.  
    String titleName = pieChart.getTitleName();
  60.  
    List<String> titleList = pieChart.getTitleList();
  61.  
    List<Integer> dataList = pieChart.getDataList();
  62.  
    XSSFChart chart = createDrawingPatriarch(sheet, chartPosition, titleName);
  63.  
    //图例位置
  64.  
    XDDFChartLegend legend = chart.getOrAddLegend();
  65.  
    legend.setPosition(LegendPosition.BOTTOM);
  66.  
    //分类轴标数据
  67.  
    XDDFDataSource<String> countries = XDDFDataSourcesFactory.fromArray(titleList.toArray(new String[]{}));
  68.  
    XDDFNumericalDataSource<Integer> values = XDDFDataSourcesFactory.fromArray(dataList.toArray(new Integer[]{}));
  69.  
    XDDFChartData data = chart.createData(ChartTypes.PIE, null, null);
  70.  
    //设置为可变颜色
  71.  
    data.setVaryColors(true);
  72.  
    //图表加载数据
  73.  
    data.addSeries(countries, values);
  74.  
    //绘制
  75.  
    chart.plot(data);
  76.  
    CTDLbls ctdLbls = chart.getCTChart().getPlotArea().getPieChartArray(0).getSerArray(0).addNewDLbls();
  77.  
    ctdLbls.addNewShowVal().setVal(false);
  78.  
    ctdLbls.addNewShowLegendKey().setVal(false);
  79.  
    //类别名称
  80.  
    ctdLbls.addNewShowCatName().setVal(false);
  81.  
    //百分比
  82.  
    ctdLbls.addNewShowSerName().setVal(false);
  83.  
    ctdLbls.addNewShowPercent().setVal(true);
  84.  
    //引导线
  85.  
    ctdLbls.addNewShowLeaderLines().setVal(false);
  86.  
    //分隔符为分行符
  87.  
    ctdLbls.setSeparator("\n");
  88.  
    //数据标签内
  89.  
    ctdLbls.addNewDLblPos().setVal(STDLblPos.Enum.forString("inEnd"));
  90.  
    }
  91.  
     
  92.  
    /**
  93.  
    * 创建折线图
  94.  
    *
  95.  
    * @param sheet 图表
  96.  
    * @see com.gideon.entity.PieChart 饼图数据的封装
  97.  
    * @see com.gideon.entity.ChartPosition 饼图的坐标位置
  98.  
    */
  99.  
    public static void createLine(XSSFSheet sheet, ChartPosition chartPosition, LineChart lineChart) {
  100.  
    List<Object> xAxisList = lineChart.getXAxisList();
  101.  
    List<String> chartTitleList = lineChart.getTitleList();
  102.  
    List<List<Integer>> chartDataList = lineChart.getDataList();
  103.  
    String chartTitle = lineChart.getChartTitle();
  104.  
    XSSFChart chart = createDrawingPatriarch(sheet, chartPosition, chartTitle);
  105.  
    //图例位置
  106.  
    XDDFChartLegend legend = chart.getOrAddLegend();
  107.  
    legend.setPosition(LegendPosition.TOP);
  108.  
    //分类轴标(X轴),标题位置
  109.  
    XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM);
  110.  
    //值(Y轴)轴,标题位置
  111.  
    XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT);
  112.  
    //LINE:折线图
  113.  
    XDDFLineChartData data = (XDDFLineChartData) chart.createData(ChartTypes.LINE, bottomAxis, leftAxis);
  114.  
    XDDFCategoryDataSource countries = XDDFDataSourcesFactory.fromArray(Arrays.copyOf(xAxisList.toArray(), xAxisList.toArray().length, String[].class));
  115.  
    for (int i = 0; i < chartDataList.size(); i ) {
  116.  
    List<Integer> floats = chartDataList.get(i);
  117.  
    XDDFNumericalDataSource<Integer> dataSource = XDDFDataSourcesFactory.fromArray(floats.toArray(new Integer[]{}));
  118.  
    //图表加载数据,折线
  119.  
    XDDFLineChartData.Series series = (XDDFLineChartData.Series) data.addSeries(countries, dataSource);
  120.  
    series.setTitle(chartTitleList.get(i), null);
  121.  
    //直线
  122.  
    series.setSmooth(false);
  123.  
    //设置标记大小
  124.  
    series.setMarkerSize((short) 2);
  125.  
    //添加标签数据,折线图中拐点值展示
  126.  
    series.setShowLeaderLines(true);
  127.  
    chart.getCTChart().getPlotArea().getLineChartArray(0).getSerArray(i).getDLbls()
  128.  
    .addNewDLblPos().setVal(org.openxmlformats.schemas.drawingml.x2006.chart.STDLblPos.CTR);
  129.  
    chart.getCTChart().getPlotArea().getLineChartArray(0).getSerArray(i).getDLbls().addNewShowVal().setVal(true);
  130.  
    chart.getCTChart().getPlotArea().getLineChartArray(0).getSerArray(i).getDLbls().addNewShowLegendKey().setVal(false);
  131.  
    chart.getCTChart().getPlotArea().getLineChartArray(0).getSerArray(i).getDLbls().addNewShowCatName().setVal(false);
  132.  
    chart.getCTChart().getPlotArea().getLineChartArray(0).getSerArray(i).getDLbls().addNewShowSerName().setVal(false);
  133.  
    }
  134.  
    //绘制
  135.  
    chart.plot(data);
  136.  
    if (chartDataList.size() == 1) {
  137.  
    chart.getCTChart().getPlotArea().getLineChartArray(0).addNewVaryColors().setVal(false);
  138.  
    }
  139.  
    }
  140.  
     
  141.  
    /**
  142.  
    * 创建列表
  143.  
    */
  144.  
    public static void createTable(int rowNum, XSSFWorkbook wb, XSSFSheet sheet) {
  145.  
    // 样式
  146.  
    XSSFCellStyle titleStyle = createTitleCellStyle(wb);
  147.  
    XSSFCellStyle contentStyle = createContentCellStyle(wb);
  148.  
    // 创建第一页的第一行,索引从0开始
  149.  
    XSSFRow row = sheet.createRow(rowNum);
  150.  
    row.setHeight((short) 500);
  151.  
    XSSFCell cell0 = row.createCell(0);
  152.  
    cell0.setCellValue("动态列表");
  153.  
    cell0.setCellStyle(tableNameCellStyle(wb));
  154.  
    // 合并单元格,参数依次为起始行,结束行,起始列,结束列 (索引0开始)
  155.  
    sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, 0, 2));
  156.  
     
  157.  
    XSSFRow row1 = sheet.createRow(rowNum 1);
  158.  
    XSSFRow row2 = sheet.createRow(rowNum 2);
  159.  
    row1.setHeight((short) 600);
  160.  
    row2.setHeight((short) 600);
  161.  
     
  162.  
    String title0 = "序号";
  163.  
    XSSFCell cell = row1.createCell(0);
  164.  
    cell.setCellValue(title0);
  165.  
    // 合并单元格,参数依次为起始行,结束行,起始列,结束列 (索引0开始)
  166.  
    CellRangeAddress region = new CellRangeAddress(rowNum 1, rowNum 2, 0, 0);
  167.  
    sheet.addMergedRegion(region);
  168.  
    // 合并之后为合并的单元格设置样式
  169.  
    setRegionStyle(sheet, region, titleStyle);
  170.  
     
  171.  
    String title = "城市";
  172.  
    XSSFCell c00 = row1.createCell(1);
  173.  
    c00.setCellValue(title);
  174.  
    // 合并单元格,参数依次为起始行,结束行,起始列,结束列 (索引0开始)
  175.  
    CellRangeAddress cellRangeAddress = new CellRangeAddress(rowNum 1, rowNum 2, 1, 1);
  176.  
    sheet.addMergedRegion(cellRangeAddress);
  177.  
    setRegionStyle(sheet, cellRangeAddress, titleStyle);
  178.  
     
  179.  
    String[] years = {"21年", "22年", "23年"};
  180.  
    int startCellIndex = 2;
  181.  
    int endCellIndex = 4;
  182.  
    // 动态年份
  183.  
    for (int i = 0; i < years.length; i ) {
  184.  
    XSSFCell cell1 = row1.createCell(startCellIndex);
  185.  
    cell1.setCellValue(years[i]);
  186.  
    CellRangeAddress cellAddresses = new CellRangeAddress(rowNum 1, rowNum 1, startCellIndex, endCellIndex);
  187.  
    sheet.addMergedRegion(cellAddresses);
  188.  
    setRegionStyle(sheet, cellAddresses, titleStyle);
  189.  
    XSSFCell cell11 = row2.createCell(startCellIndex );
  190.  
    cell11.setCellValue("动态列1");
  191.  
    cell11.setCellStyle(titleStyle);
  192.  
    XSSFCell cell2 = row2.createCell(startCellIndex );
  193.  
    cell2.setCellValue("动态列2");
  194.  
    cell2.setCellStyle(titleStyle);
  195.  
    XSSFCell cell3 = row2.createCell(startCellIndex );
  196.  
    cell3.setCellValue("动态列3");
  197.  
    cell3.setCellStyle(titleStyle);
  198.  
    endCellIndex = 3;
  199.  
    }
  200.  
     
  201.  
    rowNum = 3;
  202.  
    for (int j = 0; j < 10; j ) {
  203.  
    int k = j 1;
  204.  
    XSSFRow tempRow = sheet.createRow(rowNum);
  205.  
    rowNum ;
  206.  
    // 序号
  207.  
    XSSFCell cell11 = tempRow.createCell(0);
  208.  
    cell11.setCellValue(k);
  209.  
    cell11.setCellStyle(contentStyle);
  210.  
    // 城市
  211.  
    XSSFCell cell2 = tempRow.createCell(1);
  212.  
    cell2.setCellValue("城市" k);
  213.  
    cell2.setCellStyle(contentStyle);
  214.  
    int columnIndex = 2;
  215.  
    int k1 = 1;
  216.  
    for (int i = 0; i < years.length; i ) {
  217.  
    XSSFCell cell3 = tempRow.createCell(columnIndex );
  218.  
    cell3.setCellValue("测试" k1 );
  219.  
    cell3.setCellStyle(contentStyle);
  220.  
    XSSFCell cell4 = tempRow.createCell(columnIndex );
  221.  
    cell4.setCellValue("测试" k1 );
  222.  
    cell4.setCellStyle(contentStyle);
  223.  
    XSSFCell cell5 = tempRow.createCell(columnIndex );
  224.  
    cell5.setCellValue("测试" k1 );
  225.  
    cell5.setCellStyle(contentStyle);
  226.  
    }
  227.  
    }
  228.  
    }
  229.  
     
  230.  
    /**
  231.  
    * 为合并的单元格设置样式(可根据需要自行调整)
  232.  
    */
  233.  
    @SuppressWarnings("deprecation")
  234.  
    public static void setRegionStyle(XSSFSheet sheet, CellRangeAddress region, XSSFCellStyle cs) {
  235.  
    for (int i = region.getFirstRow(); i <= region.getLastRow(); i ) {
  236.  
    XSSFRow row = sheet.getRow(i);
  237.  
    if (null == row) row = sheet.createRow(i);
  238.  
    for (int j = region.getFirstColumn(); j <= region.getLastColumn(); j ) {
  239.  
    XSSFCell cell = row.getCell(j);
  240.  
    if (null == cell) cell = row.createCell(j);
  241.  
    cell.setCellStyle(cs);
  242.  
    }
  243.  
    }
  244.  
    }
  245.  
     
  246.  
    /**
  247.  
    * 列表名称样式
  248.  
    *
  249.  
    * @param wb
  250.  
    * @return
  251.  
    */
  252.  
    public static XSSFCellStyle tableNameCellStyle(XSSFWorkbook wb) {
  253.  
    XSSFCellStyle cellStyle = wb.createCellStyle();
  254.  
    cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直对齐
  255.  
     
  256.  
    XSSFFont headerFont1 = wb.createFont(); // 创建字体样式
  257.  
    headerFont1.setBold(true); //字体加粗
  258.  
    headerFont1.setFontName("黑体"); // 设置字体类型
  259.  
    headerFont1.setFontHeightInPoints((short) 12); // 设置字体大小
  260.  
    cellStyle.setFont(headerFont1); // 为标题样式设置字体样式
  261.  
    return cellStyle;
  262.  
    }
  263.  
     
  264.  
    /**
  265.  
    * 创建标题样式
  266.  
    *
  267.  
    * @param wb
  268.  
    * @return
  269.  
    */
  270.  
    private static XSSFCellStyle createTitleCellStyle(XSSFWorkbook wb) {
  271.  
    XSSFCellStyle cellStyle = wb.createCellStyle();
  272.  
    cellStyle.setAlignment(HorizontalAlignment.CENTER);//水平居中
  273.  
    cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直对齐
  274.  
    cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
  275.  
    cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//背景颜色
  276.  
    cellStyle.setBottomBorderColor(IndexedColors.BLACK.index);
  277.  
    cellStyle.setBorderBottom(BorderStyle.THIN); //下边框
  278.  
    cellStyle.setBorderLeft(BorderStyle.THIN); //左边框
  279.  
    cellStyle.setBorderRight(BorderStyle.THIN); //右边框
  280.  
    cellStyle.setBorderTop(BorderStyle.THIN); //上边框
  281.  
     
  282.  
    XSSFFont headerFont1 = wb.createFont(); // 创建字体样式
  283.  
    // headerFont1.setBold(true); //字体加粗
  284.  
    headerFont1.setFontName("黑体"); // 设置字体类型
  285.  
    headerFont1.setFontHeightInPoints((short) 12); // 设置字体大小
  286.  
    cellStyle.setFont(headerFont1); // 为标题样式设置字体样式
  287.  
    return cellStyle;
  288.  
    }
  289.  
     
  290.  
    /**
  291.  
    * 创建内容样式
  292.  
    *
  293.  
    * @param wb
  294.  
    * @return
  295.  
    */
  296.  
    private static XSSFCellStyle createContentCellStyle(XSSFWorkbook wb) {
  297.  
    XSSFCellStyle cellStyle = wb.createCellStyle();
  298.  
    cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直居中
  299.  
    cellStyle.setAlignment(HorizontalAlignment.CENTER);// 水平居中
  300.  
    cellStyle.setWrapText(true);// 设置自动换行
  301.  
    cellStyle.setBorderBottom(BorderStyle.THIN); //下边框
  302.  
    cellStyle.setBorderLeft(BorderStyle.THIN); //左边框
  303.  
    cellStyle.setBorderRight(BorderStyle.THIN); //右边框
  304.  
    cellStyle.setBorderTop(BorderStyle.THIN); //上边框
  305.  
     
  306.  
    // 生成12号字体
  307.  
    XSSFFont font = wb.createFont();
  308.  
    font.setColor((short) 8);
  309.  
    font.setFontHeightInPoints((short) 12);
  310.  
    cellStyle.setFont(font);
  311.  
     
  312.  
    return cellStyle;
  313.  
    }
  314.  
     
  315.  
    }
学新通

完整代码地址:https://gitee.com/Szw99/create-excel.git

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgebcbf
系列文章
更多 icon
同类精品
更多 icon
继续加载