| /* |
| * ==================================================================== |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * ==================================================================== |
| */ |
| |
| package org.apache.poi.examples.ss; |
| |
| import java.io.FileOutputStream; |
| import java.io.IOException; |
| |
| import org.apache.poi.hssf.usermodel.HSSFWorkbook; |
| import org.apache.poi.ss.usermodel.BorderExtent; |
| import org.apache.poi.ss.usermodel.BorderStyle; |
| import org.apache.poi.ss.usermodel.Cell; |
| import org.apache.poi.ss.usermodel.IndexedColors; |
| import org.apache.poi.ss.usermodel.Row; |
| import org.apache.poi.ss.usermodel.Sheet; |
| import org.apache.poi.ss.usermodel.Workbook; |
| import org.apache.poi.ss.util.CellRangeAddress; |
| import org.apache.poi.ss.util.PropertyTemplate; |
| import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
| |
| /** |
| * Excel Border Drawing - examples |
| * |
| * <p> |
| * Partly based on the code snippets from |
| * org.apache.poi.ss.examples.ConditionalFormats |
| * </p> |
| */ |
| @SuppressWarnings({"java:S106","java:S4823"}) |
| public final class DrawingBorders { |
| |
| private DrawingBorders() {} |
| |
| public static void main(String[] args) throws IOException { |
| try (Workbook wb = (args.length > 0 && args[0].equals("-xls")) |
| ? new HSSFWorkbook() : new XSSFWorkbook()) { |
| // add a sheet, and put some values into it |
| Sheet sh1 = wb.createSheet("Sheet1"); |
| Row r = sh1.createRow(0); |
| Cell c = r.createCell(1); |
| c.setCellValue("All Borders Medium Width"); |
| r = sh1.createRow(4); |
| c = r.createCell(1); |
| c.setCellValue("Medium Outside / Thin Inside Borders"); |
| r = sh1.createRow(8); |
| c = r.createCell(1); |
| c.setCellValue("Colored Borders"); |
| |
| // draw borders (three 3x3 grids) |
| PropertyTemplate pt = new PropertyTemplate(); |
| // #1) these borders will all be medium in default color |
| pt.drawBorders(new CellRangeAddress(1, 3, 1, 3), |
| BorderStyle.MEDIUM, BorderExtent.ALL); |
| // #2) these cells will have medium outside borders and thin inside borders |
| pt.drawBorders(new CellRangeAddress(5, 7, 1, 3), |
| BorderStyle.MEDIUM, BorderExtent.OUTSIDE); |
| pt.drawBorders(new CellRangeAddress(5, 7, 1, 3), BorderStyle.THIN, |
| BorderExtent.INSIDE); |
| // #3) these cells will all be medium weight with different colors for the |
| // outside, inside horizontal, and inside vertical borders. The center |
| // cell will have no borders. |
| pt.drawBorders(new CellRangeAddress(9, 11, 1, 3), |
| BorderStyle.MEDIUM, IndexedColors.RED.getIndex(), |
| BorderExtent.OUTSIDE); |
| pt.drawBorders(new CellRangeAddress(9, 11, 1, 3), |
| BorderStyle.MEDIUM, IndexedColors.BLUE.getIndex(), |
| BorderExtent.INSIDE_VERTICAL); |
| pt.drawBorders(new CellRangeAddress(9, 11, 1, 3), |
| BorderStyle.MEDIUM, IndexedColors.GREEN.getIndex(), |
| BorderExtent.INSIDE_HORIZONTAL); |
| pt.drawBorders(new CellRangeAddress(10, 10, 2, 2), |
| BorderStyle.NONE, |
| BorderExtent.ALL); |
| |
| // apply borders to sheet |
| pt.applyBorders(sh1); |
| |
| // add another sheet and apply the borders to it |
| Sheet sh2 = wb.createSheet("Sheet2"); |
| pt.applyBorders(sh2); |
| |
| // Write the output to a file |
| String file = "db-poi.xls" + (wb instanceof XSSFWorkbook ? "x" : ""); |
| try (FileOutputStream out = new FileOutputStream(file)) { |
| wb.write(out); |
| } |
| System.out.println("Generated: " + file); |
| } |
| } |
| |
| } |