POI格式化Cell样式4.1.2版本

本文通过示例代码展示了如何使用Apache POI库对Excel文件进行格式化操作,包括设置字体、边框、对齐方式、高度和宽度、自动换行及合并单元格等。

文章代码来自:https://blog.csdn.net/q394895302/article/details/84225761
对POI的版本兼容做出修改。

poi版本

<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>poi</artifactId>
	<version>4.1.2</version>
</dependency>
<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>poi-ooxml</artifactId>
	<version>4.1.2</version>
</dependency>
 
import java.io.FileOutputStream;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFColor;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
public class Test {
	 public static void main(String[] args) {   
	        try {   
	            // 创建Excel表格工作簿  
	            Workbook wb = new XSSFWorkbook();   
	            Sheet sheet = wb.createSheet("表格单元格格式化");   
	               
	            //============================   
	            //       设置单元格的字体   
	            //============================   
	            Row ztRow = sheet.createRow((short)0);   
	            Cell ztCell = ztRow.createCell(0);   
	            ztCell.setCellValue("Test");   
	            // 创建单元格样式对象   
	            XSSFCellStyle ztStyle = (XSSFCellStyle) wb.createCellStyle();   
	            // 创建字体对象   
	            Font ztFont = wb.createFont();   
	            ztFont.setItalic(true);                     // 设置字体为斜体字   
	            ztFont.setColor(Font.COLOR_RED);            // 将字体设置为“红色”   
	            ztFont.setFontHeightInPoints((short)22);    // 将字体大小设置为18px   
	            ztFont.setFontName("华文行楷");             // 将“华文行楷”字体应用到当前单元格上   
	            ztFont.setUnderline(Font.U_DOUBLE);         // 添加(Font.U_SINGLE单条下划线/Font.U_DOUBLE双条下划线)   
//	          ztFont.setStrikeout(true);                  // 是否添加删除线   
	            ztStyle.setFont(ztFont);                    // 将字体应用到样式上面   
	            ztCell.setCellStyle(ztStyle);               // 样式应用到该单元格上   
	               
	            //============================   
	            //        设置单元格边框   
	            //============================   
	            Row borderRow = sheet.createRow(2);   
	            Cell borderCell = borderRow.createCell(1);   
	            borderCell.setCellValue("Test");   
	            // 创建单元格样式对象   
	            XSSFCellStyle borderStyle = (XSSFCellStyle)wb.createCellStyle();   
	            // 设置单元格边框样式   
	            // BorderStyle.DOUBLE      双边线
	            // BorderStyle.THIN        细边线
	            // BorderStyle.MEDIUM      中等边线
	            // BorderStyle.DASHED      虚线边线
	            // BorderStyle.HAIR        小圆点虚线边线
	            // BorderStyle.THICK       粗边线
	            borderStyle.setBorderBottom(BorderStyle.THICK);
	            borderStyle.setBorderTop(BorderStyle.DASHED);
	            borderStyle.setBorderLeft(BorderStyle.DOUBLE);
	            borderStyle.setBorderRight(BorderStyle.THIN);
	               
	            // 设置单元格边框颜色   
	            borderStyle.setBottomBorderColor(new XSSFColor(java.awt.Color.RED));   
	            borderStyle.setTopBorderColor(new XSSFColor(java.awt.Color.GREEN));   
	            borderStyle.setLeftBorderColor(new XSSFColor(java.awt.Color.BLUE));   
	               
	            borderCell.setCellStyle(borderStyle);   
	               
	            //============================   
	            //      设置单元内容的对齐方式   
	            //============================   
	            Row alignRow = sheet.createRow(4);   
	            Cell alignCell = alignRow.createCell(1);   
	            alignCell.setCellValue("Test");   
	               
	            // 创建单元格样式对象   
	            XSSFCellStyle alignStyle = (XSSFCellStyle)wb.createCellStyle();   
	               
	            // 设置单元格内容水平对其方式   
	            // HorizontalAlignment.CENTER       居中对齐
	            // HorizontalAlignment.LEFT         左对齐
	            // HorizontalAlignment.RIGHT        右对齐
	            alignStyle.setAlignment(HorizontalAlignment.CENTER);
	               
	            // 设置单元格内容垂直对其方式   
	            // VerticalAlignment.TOP       上对齐
	            // VerticalAlignment.CENTER    中对齐
	            // VerticalAlignment.BOTTOM    下对齐
	            alignStyle.setVerticalAlignment(VerticalAlignment.CENTER);
	               
	            alignCell.setCellStyle(alignStyle);   
	               
	            //============================   
	            //      设置单元格的高度和宽度   
	            //============================   
	            Row sizeRow = sheet.createRow(6);   
	            sizeRow.setHeightInPoints(30);                  // 设置行的高度   
	               
	            Cell sizeCell = sizeRow.createCell(1);     
	            String sizeCellValue = "《Java编程思想》";            // 字符串的长度为10,表示该字符串中有10个字符,忽略中英文   
	            sizeCell.setCellValue(sizeCellValue);       
	            // 设置单元格的长度为sizeCellVlue的长度。而sheet.setColumnWidth使用sizeCellVlue的字节数   
	            // sizeCellValue.getBytes().length == 16   
	            sheet.setColumnWidth(1, (sizeCellValue.getBytes().length) * 256 );   
	               
	            //============================   
	            //      设置单元格自动换行   
	            //============================   
	            Row wrapRow = sheet.createRow(8);   
	            Cell wrapCell = wrapRow.createCell(2);   
	            wrapCell.setCellValue("宝剑锋从磨砺出,梅花香自苦寒来");   
	               
	            // 创建单元格样式对象   
	            XSSFCellStyle wrapStyle = (XSSFCellStyle)wb.createCellStyle();   
	            wrapStyle.setWrapText(true);                    // 设置单元格内容是否自动换行   
	            wrapCell.setCellStyle(wrapStyle);   
	               
	            //============================   
	            //         合并单元格列   
	            //============================   
	            Row regionRow = sheet.createRow(12);   
	            Cell regionCell = regionRow.createCell(0);   
	            regionCell.setCellValue("宝剑锋从磨砺出,梅花香自苦寒来");   
	               
	            // 合并第十三行中的A、B、C三列   
	            CellRangeAddress region = new CellRangeAddress(12, 12, 0, 2); // 参数都是从O开始   
	            sheet.addMergedRegion(region);   
	               
	            //============================   
	            //         合并单元格行和列   
	            //============================   
	            Row regionRow2 = sheet.createRow(13);   
	            Cell regionCell2 = regionRow2.createCell(3);   
	            String region2Value = "宝剑锋从磨砺出,梅花香自苦寒来。"  
	                                + "采得百花成蜜后,为谁辛苦为谁甜。"  
	                                + "操千曲而后晓声,观千剑而后识器。"  
	                                + "察己则可以知人,察今则可以知古。";   
	            regionCell2.setCellValue(region2Value);   
	               
	            // 合并第十三行中的A、B、C三列   
	            CellRangeAddress region2 = new CellRangeAddress(13, 17, 3, 7); // 参数都是从O开始   
	            sheet.addMergedRegion(region2);   
	               
	            XSSFCellStyle region2Style = (XSSFCellStyle)wb.createCellStyle();   
	            region2Style.setVerticalAlignment(VerticalAlignment.CENTER);
	            region2Style.setWrapText(true);                     // 设置单元格内容是否自动换行   
	            regionCell2.setCellStyle(region2Style);   
	                           
	            //============================   
	            // 将Excel文件写入到磁盘上   
	            //============================   
	            FileOutputStream is = new FileOutputStream("D://Test.xls");   
	            wb.write(is);   
	            is.close();   
	               
	            System.out.println("写入成功,运行结束!");   
	        } catch(Exception e) {   
	            e.printStackTrace();   
	        }   
	    }   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值