本文介绍了使用 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 工作表上的所有边框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!