# 导出
# 简单的写
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class Demo1 {
public static void main(String[] args) {
//创建工作簿
Workbook workbook = new XSSFWorkbook();
//创建表单 sheet
//如果多个sheet 则执行多个 workbook.createSheet("poi");
Sheet sheet = workbook.createSheet("poi");
//行对象
Row row = sheet.createRow(0);
//单元格
Cell cell = row.createCell(0);
//写入内容
cell.setCellValue("第一个内容");
try (
OutputStream os = new FileOutputStream("D:/excelDemo/a.xlsx")
) {
workbook.write(os);
} catch (Exception e) {
e.printStackTrace();
}
}
}
# 单元格样式
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class Demo1 {
public static void main(String[] args) {
//创建工作簿
Workbook workbook = new XSSFWorkbook();
//创建表单 sheet
//如果多个sheet 则执行多个 workbook.createSheet("poi");
Sheet sheet = workbook.createSheet("poi");
//行对象
Row row = sheet.createRow(0);
//单元格
Cell cell = row.createCell(0);
//写入内容
cell.setCellValue("第一个内容");
setStyle(workbook.createCellStyle(), sheet, workbook.createFont(), row, cell);
try (
OutputStream os = new FileOutputStream("D:/excelDemo/a.xlsx")
) {
workbook.write(os);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void setStyle(CellStyle cellStyle, Sheet sheet, Font font, Row row,Cell cell) {
//创建样式
//上下左右边框
cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBorderLeft(BorderStyle.THIN);
cellStyle.setBorderRight(BorderStyle.THIN);
cellStyle.setBorderTop(BorderStyle.THIN);
//字体对象
font.setFontName("宋体");
//字体大小
font.setFontHeightInPoints((short) 18);
cellStyle.setFont(font);
//行高
row.setHeightInPoints(20);
//列宽 (索引,宽度(源码会/256 如果设置20 需要*256))
sheet.setColumnWidth(0, 20 * 256);
//居中
cellStyle.setAlignment(HorizontalAlignment.CENTER);
//水平居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
//向单元格设置样式
cell.setCellStyle(cellStyle);
}
}
# 绘制图形
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class Demo1 {
public static void main(String[] args) {
//创建工作簿
Workbook workbook = new XSSFWorkbook();
//创建表单 sheet
//如果多个sheet 则执行多个 workbook.createSheet("poi");
Sheet sheet = workbook.createSheet("poi");
//行对象
Row row = sheet.createRow(0);
//单元格
Cell cell = row.createCell(0);
//写入内容
cell.setCellValue("第一个内容");
setStyle(workbook.createCellStyle(), sheet, workbook.createFont(), row, cell);
setImg(workbook, sheet);
try (
OutputStream os = new FileOutputStream("D:/excelDemo/a.xlsx")
) {
workbook.write(os);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void setStyle(CellStyle cellStyle, Sheet sheet, Font font, Row row,Cell cell) {
//上下左右边框
cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBorderLeft(BorderStyle.THIN);
cellStyle.setBorderRight(BorderStyle.THIN);
cellStyle.setBorderTop(BorderStyle.THIN);
//字体对象
font.setFontName("宋体");
//字体大小
font.setFontHeightInPoints((short) 18);
cellStyle.setFont(font);
//行高
row.setHeightInPoints(20);
//列宽 (索引,宽度(源码会/256 如果设置20 需要*256))
sheet.setColumnWidth(0, 20 * 256);
//居中
cellStyle.setAlignment(HorizontalAlignment.CENTER);
//水平居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
//向单元格设置样式
cell.setCellStyle(cellStyle);
}
public static void setImg(Workbook workbook,Sheet sheet) {
//读取图片流
try (
InputStream is = new FileInputStream("C:\\Users\\GaoLiang\\Pictures\\uTools_1687237919654.png")
) {
//转化二进制,这里poi提供了工具类
byte[] imgByteArray = IOUtils.toByteArray(is);
is.read(imgByteArray);
//向POI内存中添加一张图片,返回图片集合中的索引
/**
* params1:byte
* params2:图片类型
*/
int imgIndex = workbook.addPicture(imgByteArray, Workbook.PICTURE_TYPE_JPEG);
//绘制图片工具类
CreationHelper creationHelper = workbook.getCreationHelper();
Drawing<?> drawingPatriarch = sheet.createDrawingPatriarch();
//创建描点,设置图片坐标
ClientAnchor clientAnchor = creationHelper.createClientAnchor();
//从第几行开始
clientAnchor.setRow1(0);
//第几列
clientAnchor.setCol1(0);
//绘制图片
Picture picture = drawingPatriarch.createPicture(clientAnchor, imgIndex); //图片位置,图片索引
//自适应渲染图片
picture.resize();
} catch (Exception e) {
e.printStackTrace();
}
}
}