java poi 设置背景色,Java Apache Poi,如何同时设置背景颜色和边框

at start i want to say that i'm totally new in developers world.

I tried to generate an excel sheet that contains Mutiplication Table with borders and set background color but only for 1st column and row.

Here is a correct Example: correct example

I wrote something like that, but in result file colored cells has not have borders :(.

Please explain me how to set background color and borders at the same time.import org.apache.poi.ss.usermodel.Workbook;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.ss.usermodel.Sheet;

import org.apache.poi.ss.usermodel.Row;

import org.apache.poi.ss.usermodel.Cell;

import org.apache.poi.ss.usermodel.CellStyle;

import org.apache.poi.ss.usermodel.IndexedColors;

import java.awt.image.IndexColorModel;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.Scanner;

public class Excel {

public static void main(String[] args) throws IOException {

Scanner in = new Scanner(System.in);

System.out.println("enter number of rows: ");

int x = in.nextInt();

System.out.println("enter number of columns: ");

int y = in.nextInt();

System.out.println("enter name of file: ");

String fileName = in.next() + ".xls";

System.out.println("Multiplication table will be created in file: " + fileName);

createExcelMultiplicationTable(fileName, x, y);

System.out.println("Process successful executed");

}

private static void createExcelMultiplicationTable(String fileName, int x, int y) throws IOException {

Workbook workbook = new HSSFWorkbook();

Sheet sheet = workbook.createSheet("multiplicationTable");

CellStyle backgroundStyle = workbook.createCellStyle();

backgroundStyle.setFillBackgroundColor(IndexedColors.GREY_50_PERCENT.getIndex());

backgroundStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);

CellStyle borderStyle = workbook.createCellStyle();

borderStyle.setBorderBottom(CellStyle.BORDER_THIN);

borderStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());

borderStyle.setBorderLeft(CellStyle.BORDER_THIN);

borderStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());

borderStyle.setBorderRight(CellStyle.BORDER_THIN);

borderStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());

borderStyle.setBorderTop(CellStyle.BORDER_THIN);

borderStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());

for (int i = 1; i <= x; i++) {

Row row = sheet.createRow(i - 1);

for (int j = 1; j <= y; j++) {

Cell cell = row.createCell(j - 1);

cell.setCellValue(i * j);

cell.setCellStyle(borderStyle);

if (cell.getRowIndex() == 0 || cell.getColumnIndex() == 0) {

cell.setCellStyle(backgroundStyle);

}

}

}

FileOutputStream out = new FileOutputStream(fileName);

workbook.write(out);

out.close();

}

}

解决方案

change backgroundStyle.setFillBackgroundColor(IndexedColors.GREY_50_PERCENT.getIndex()); to

backgroundStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());

And you can set border as like below :

backgroundStyle.setBorderBottom(CellStyle.BORDER_THIN);

backgroundStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());

backgroundStyle.setBorderLeft(CellStyle.BORDER_THIN);

backgroundStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());

backgroundStyle.setBorderRight(CellStyle.BORDER_THIN);

backgroundStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());

backgroundStyle.setBorderTop(CellStyle.BORDER_THIN);

backgroundStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());

This will give you yellow color and border as required

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值