poi

POI报表

POI入门操作

1.导入依赖

<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.0.1</version>
</dependency>
</dependencies>

2.poi结构说明

HSSF提供读写Microsoft Excel XLS格式档案的功能。
XSSF提供读写Microsoft Excel OOXML XLSX格式档案的功能。
HWPF提供读写Microsoft Word DOC格式档案的功能。
HSLF提供读写Microsoft PowerPoint格式档案的功能。
HDGF提供读Microsoft Visio格式档案的功能。
HPBF提供读Microsoft Publisher格式档案的功能。
HSMF提供读Microsoft Outlook格式档案的功能。

3.API介绍

API名称
WorkbookExcel的文档对象,针对不同的Excel类型分为:HSSFWorkbook(2003)和 XSSFWorkbool(2007)
SheetExcel的表单
RowExcel的行
CellExcel的格子单元
FontExcel字体
CellStyle格子单元样式

4.基本操作

/**
 * 使用POI创建excel
 * @author hsh
 *
 */
public class PoiTest01
{
	public static void main(String[] args) throws IOException
	{
		//1.创建工作簿 HSSFWorkbook--2007版本
		Workbook wb=new XSSFWorkbook();
		//2.创建表单sheet
		Sheet sheet = wb.createSheet("text");
		//3.获取文件流
		FileOutputStream pis=new FileOutputStream("E:\\poi\\test.xlsx");
		//4.写入文件
		wb.write(pis);
		pis.close();
	}
}

5.创建单元格

/**
 * 创建单元格写入内容
 * @author Wye
 *
 */
public class PoiTest02
{
	public static void main(String[] args) throws IOException
	{
		//创建工作簿 HSSFWorkbook--2007版本
		Workbook wb=new XSSFWorkbook();
		//创建表单sheet
		Sheet sheet = wb.createSheet("text");
		//创建行对象,参数索引从0开始
		Row row = sheet.createRow(2);
		//创建单元格对象,参数索引从0开始
		Cell cell = row.createCell(3);
		//向单元格写入内容
		cell.setCellValue("宝哥生日快乐");
		//获取文件流
		FileOutputStream pis=new FileOutputStream("E:\\poi\\test1.xlsx");
		//写入文件
		wb.write(pis);
		pis.close();
	}
}

6.设置单元格样式

/**
 * 单元格样式处理
 * @author Wye
 *
 */
public class PoiTest02
{
	public static void main(String[] args) throws IOException
	{
		//创建工作簿 HSSFWorkbook--2007版本
		Workbook wb=new XSSFWorkbook();
		//创建表单sheet
		Sheet sheet = wb.createSheet("text");
		//创建行对象,参数索引从0开始
		Row row = sheet.createRow(2);
		//创建单元格对象,参数索引从0开始
		Cell cell = row.createCell(3);
		//向单元格写入内容
		cell.setCellValue("阿里嘎多妈妈哈哈");
		//样式处理
		//创建样式对象
		CellStyle style = wb.createCellStyle();
		style.setBorderTop(BorderStyle.THIN);//上边框
		style.setBorderBottom(BorderStyle.THIN);//下边框
		style.setBorderLeft(BorderStyle.THIN);//左边框
		style.setBorderRight(BorderStyle.THIN);//右边框
		//创建字体对象
		Font font = wb.createFont();
		font.setFontName("华文琥珀");//字体
		font.setFontHeightInPoints((short)28);//字号
		style.setFont(font);//将字体放入样式对象
		
		//行高和列宽
		row.setHeightInPoints(50);//行高
		//列宽的宽度 字符的宽度
		sheet.setColumnWidth(2, 31*256); //列宽
		//居中显示
		style.setAlignment(HorizontalAlignment.CENTER);//水平居中
		style.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
		
		//像单元格设置样式
		cell.setCellStyle(style);
		
		//获取文件流
		FileOutputStream pis=new FileOutputStream("E:\\poi\\test2.xlsx");
		//写入文件
		wb.write(pis);
		pis.close();
	}
}

7.绘制图形

/**
 * 像单元格中插入图片
 * @author Wye
 *
 */
public class PoiTest05
{
	public static void main(String[] args) throws IOException
	{
		//创建工作簿 HSSFWorkbook--2007版本
		Workbook wb=new XSSFWorkbook();
		//创建表单sheet
		Sheet sheet = wb.createSheet("text");
		
		//读取图片流
		FileInputStream stream=new FileInputStream("E:\\poi\\logo.jpg");
		//转换成二进制数组(Poi提供的工具类)
		byte[] byteArray = IOUtils.toByteArray(stream);
		stream.read(byteArray);
		//向poi内存中添加一张图片(参数一,图片的二进制数据,参数二,当前图片的类型)
		int picture = wb.addPicture(byteArray, Workbook.PICTURE_TYPE_JPEG);
		//绘制图片的工具类
		CreationHelper helper = wb.getCreationHelper();
		//创建一个绘图对象
		Drawing<?> patriarch = sheet.createDrawingPatriarch();
		//创建锚点,设置图片坐标
		ClientAnchor anchor = helper.createClientAnchor();//通过工具类创建锚点对象
		anchor.setRow1(0);//从0开始
		anchor.setCol1(0);
		//绘制图片
		Picture createPicture = patriarch.createPicture(anchor,picture);//图片位置,图片索引
		createPicture.resize();//自适应渲染图片
		//获取文件流
		FileOutputStream pis=new FileOutputStream("E:\\poi\\test3.xlsx");
		//写入文件
		wb.write(pis);
		stream.close();
		pis.close();
		
	}
}

8.加载Excel

/**
 * 
 * 读取excel并且解析
 */
public class PoiTest06
{
	public static void main(String[] args) throws IOException
	{
		// 1.根据excel文件创建工作簿
		@SuppressWarnings("resource")
		Workbook wb = new XSSFWorkbook("E:\\poi\\化塑汇工服规格表.xlsx");// xssf是excel2007
		// 2.获取sheet
		Sheet sheet = wb.getSheetAt(0);// 参数,索引从0开始
		// 3.获取sheet中的每一行和每一个单元格
		for (int rowNum = 3; rowNum < sheet.getLastRowNum(); rowNum++)
		{
			Row row = sheet.getRow(rowNum);// 根据索引获取每一行
			StringBuilder builder = new StringBuilder();
			for (int cellNum = 0; cellNum < row.getLastCellNum(); cellNum++)
			{
				// 根据索引获取每一个单元的单元格
				Cell cell = row.getCell(cellNum);
				// 获取每一个单元格的内容
				Object value = getCellValue(cell);
				builder.append(value).append("-");
			}
			System.out.println(builder.toString());
		}
	}

	/**
	 * 工具类判断单元格内容的类型
	 * 
	 * @param cell
	 * @return
	 */
	public static Object getCellValue(Cell cell)
	{
		// 1.获取单元格数据类型
		CellType cellType = cell.getCellType();
		// 2.根据单元格数据类型获取数据
		Object value = null;
		switch (cellType)
		{
		case STRING:// 字符串类型
			value = cell.getStringCellValue();
			break;
		case BOOLEAN:// boolean类型
			value = cell.getBooleanCellValue();
			break;
		case NUMERIC:// 数组类型(包含日期和普通数字)
			if (DateUtil.isCellDateFormatted(cell))
			{
				value = cell.getDateCellValue();
			} else
			{
				value = cell.getNumericCellValue();
			}
			break;
		case FORMULA:// 公式类型
			value = cell.getCellFormula();
			break;
		default:
			break;
		}
		return value;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值