本文介绍了使用 Apache POI 删除特定 Excel 工作表上的所有边框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 Apache POI 生成 Excel 文件.我需要删除工作表中的所有边框.如何使用 Apache PIO 3.11 和 Microsoft Excel 2007 完成此操作?

I am using Apache POI to generate an Excel file. I need to delete all of the borders in my worksheet. How can I accomplish this using Apache PIO 3.11 and Microsoft Excel 2007?

这是我到目前为止的代码:

Here is the code I have so far:

package models;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;

import java.io.FileOutputStream;
import java.util.List;
public class Excel {

    public static void writeDocument() {
        Workbook workbook = new HSSFWorkbook();
        Sheet sheet = workbook.createSheet("sheet");
        //first font
        Font font1 = workbook.createFont();
        font1.setBoldweight(Font.BOLDWEIGHT_BOLD);
        //first style
        CellStyle style1 = workbook.createCellStyle();
        style1.setBorderLeft(CellStyle.BORDER_NONE);
        style1.setBorderRight(CellStyle.BORDER_NONE);
        style1.setBorderBottom(CellStyle.BORDER_NONE);
        style1.setBorderTop(CellStyle.BORDER_NONE);

        //second style
        CellStyle style2 =  workbook.createCellStyle();
        style2.setFont(font1);
        style2.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
        style2.setAlignment(CellStyle.ALIGN_CENTER);
        style2.setFillForegroundColor(IndexedColors.ORANGE.getIndex());
        style2.setFillPattern(CellStyle.SOLID_FOREGROUND);
        style2.setBorderBottom(CellStyle.BORDER_THIN);
        style2.setBottomBorderColor(IndexedColors.GREY_25_PERCENT.getIndex());
        style2.setBorderLeft(CellStyle.BORDER_THIN);
        style2.setLeftBorderColor(IndexedColors.GREY_25_PERCENT.getIndex());
        style2.setBorderRight(CellStyle.BORDER_THIN);
        style2.setRightBorderColor(IndexedColors.GREY_25_PERCENT.getIndex());
        style2.setBorderTop(IndexedColors.GREY_25_PERCENT.getIndex());

        for(int i=0; i< 100 ; i++){
            for(int j=0; j< 100; j++){
                Cell cell = sheet.createRow(i).createCell(j);
                cell.setCellStyle(style1);
            }
        }


        CellRangeAddress region = new CellRangeAddress(0, 10, 0, 10);
        cleanBeforeMergeOnValidCells(sheet, region, style2);
        sheet.addMergedRegion(region);

        try {
            FileOutputStream output = new FileOutputStream("tmp/rapport.xls");
            workbook.write(output);
            output.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void cleanBeforeMergeOnValidCells(Sheet sheet, CellRangeAddress region, CellStyle cellStyle) {
        for (int rowNum = region.getFirstRow(); rowNum <= region.getLastRow(); rowNum++) {
            Row row = sheet.getRow(rowNum);
            if (row == null) {
                sheet.createRow(rowNum);
            }
            for (int colNum = region.getFirstColumn(); colNum <= region.getLastColumn(); colNum++) {
                Cell currentCell = row.getCell(colNum);
                if (currentCell == null) {
                    currentCell = row.createCell(colNum);
                }

                currentCell.setCellStyle(cellStyle);

            }
        }

    }
}

推荐答案

我认为你的意思是你不需要网格线,在这种情况下使用 setDisplayGridlines 方法,如:

I think you mean that you don't need the gridlines, in that case use the setDisplayGridlines method like:

sheet.setDisplayGridlines(false);

这篇关于使用 Apache POI 删除特定 Excel 工作表上的所有边框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-05 21:33