一、创立 Excel 单元格
咱们如何应用代码的形式,代替咱们平时新建的 excel 文档?
1. 首先依照咱们的须要抉择 POI 的构造
2. 应用 POI 提供的 API 进行创立即可
// 测试创立 excel 文件
public static void main(String[] args) throws Exception {
//1. 创立 workbook 工作簿
Workbook wb = new XSSFWorkbook();
//2. 创立表单 Sheet
Sheet sheet = wb.createSheet("test");
//3. 文件流
FileOutputStream fos = new FileOutputStream("E:\\test.xlsx");
//4. 写入文件
wb.write(fos);
fos.close();}
这时咱们容许 main 办法,找到 excel 文档查看咱们刚刚进行的操作
二、单元格填充数据
如果将数据写入到单元格中呢?
次要分几步:创立工作簿、创立表单 Sheet、创立 row、创立单元格 cell
// 测试创立单元格
public static void main(String[] args) throws Exception {
//1. 创立 workbook 工作簿
Workbook wb = new XSSFWorkbook();
//2. 创立表单 Sheet
Sheet sheet = wb.createSheet("test");
//3. 创立行对象,从 0 开始
Row row = sheet.createRow(3);
//4. 创立单元格,从 0 开始
Cell cell = row.createCell(0);
//5. 单元格写入数据
cell.setCellValue("单元格 01");
//6. 文件流
FileOutputStream fos = new FileOutputStream("E:\\test.xlsx");
//7. 写入文件
wb.write(fos);
fos.close();}
这时咱们容许 main 办法,找到 excel 文档查看咱们刚刚进行的操作
三、单元格的款式
在 excel 文档中,咱们能够设置字体、大小、单元格的宽度高度、居中显示、合并单元格等款式的操作,那么在 poi 中咱们如何进行呢?
// 测试创立单元格
public static void main(String[] args) throws Exception {
// 省略其余关键性代码......
//5. 单元格写入数据
cell.setCellValue("传智播客");
//6. 创立单元格款式对象
CellStyle cellStyle = wb.createCellStyle();
// 设置边框
cellStyle.setBorderBottom(BorderStyle.DASH_DOT);// 下边框
cellStyle.setBorderTop(BorderStyle.HAIR);// 上边框
// 设置字体
Font font = wb.createFont();// 创立字体对象
font.setFontName("华文行楷");// 设置字体
font.setFontHeightInPoints((short)28);// 设置字号
cellStyle.setFont(font);
// 设置居中显示
cellStyle.setAlignment(HorizontalAlignment.CENTER);// 程度居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直居中
// 设置单元格款式
cell.setCellStyle(cellStyle);
// 合并单元格
CellRangeAddress region = new CellRangeAddress(0, 3, 0, 2);
sheet.addMergedRegion(region);
}
四、绘制图形
在 excel 中,咱们有时候会插入一些图片,那么在 poi 中会怎么做呢?
1. 首先咱们须要将须要放入的图片转为二进制数组
2.excel 会在内存中对立集中管理图片,所以咱们向 POI 内存中增加一张图片
3. 向 POI 内存增加图片时,会返回该图片的下标,方便使用治理须要操作的图片
4. 通过绘制图片工具类进行绘制,须要先获取一个绘图对象开始绘画
5. 通过图片工具类,创立瞄点设置图片的地位坐标
6. 应用绘图对象进行操作图片的绘画
// 绘制图形
public static void main(String[] args) throws Exception {
//1. 创立 workbook 工作簿
Workbook wb = new XSSFWorkbook();
//2. 创立表单 Sheet
Sheet sheet = wb.createSheet("test");
// 读取图片流
FileInputStream stream=new FileInputStream("e:\\logo.jpg");
byte[] bytes= IOUtils.toByteArray(stream);
// 读取图片到二进制数组
stream.read(bytes);
// 向 Excel 增加一张图片, 并返回该图片在 Excel 中的图片汇合中的下标
int pictureIdx = wb.addPicture(bytes,Workbook.PICTURE_TYPE_JPEG);
// 绘图工具类
CreationHelper helper = wb.getCreationHelper();
// 创立一个绘图对象
Drawing<?> patriarch = sheet.createDrawingPatriarch();
// 创立锚点, 设置图片坐标
ClientAnchor anchor = helper.createClientAnchor();
anchor.setCol1(0);// 从 0 开始
anchor.setRow1(0);// 从 0 开始
// 创立图片
Picture picture = patriarch.createPicture(anchor, pictureIdx);
picture.resize();
//6. 文件流
FileOutputStream fos = new FileOutputStream("E:\\test.xlsx");
//7. 写入文件
wb.write(fos);
fos.close();}
参考资料
黑马程序员:基于 SaaS 平台的 iHRM 刷脸登录实战开发(报表相干视频)