java Poi基础(一)

1Poi简介:

1.1什么是poi:

Apache POI [1]  是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“简洁版的模糊实现”。

1.2poi结构:

HSSF [1]  - 提供读写Microsoft Excel XLS格式档案的功能。

XSSF [1]  - 提供读写Microsoft Excel OOXML XLSX格式档案的功能。

HWPF [1]  - 提供读写Microsoft Word DOC格式档案的功能。

HSLF [1]  - 提供读写Microsoft PowerPoint格式档案的功能。

HDGF [1]  - 提供读Microsoft Visio格式档案的功能。

HPBF [1]  - 提供读Microsoft Publisher格式档案的功能。

HSMF [1]  - 提供读Microsoft Outlook格式档案的功能。

这些都是poi提供的一些包

1.3:下载地址

这个是最新的jar包,4.0的

https://www.apache.org/dyn/closer.lua/poi/release/bin/poi-bin-4.0.0-20180907.tar.gz

还有源码包的下载

https://www.apache.org/dyn/closer.lua/poi/release/src/poi-src-4.0.0-20180907.tar.gz

下载点击这个

下载点击

2.poi基础

2.1.1新建一个表格

首先要将下载好的jar包,解压将根目录下的所有包,以及将lib目录下的commons-logging-1.2.jar

和junit-4.12.jar以及log4j-1.2.17.jar这三个通用包导入到项目的lib的目录下,poi-4.0.0.jar包是最

重要的。

public static void main(String[] args) throws IOException {//这里将异常上抛方便阅读和理解
/**
	 * 多态实现
	 * HSSFWorkbook  是对于xls进行操作
	 */
	Workbook wb=new HSSFWorkbook();//新建一个工作簿
	/**
	 * 导出所以用到输出流
      *参数为输出的地址
	 */
	FileOutputStream fout=new FileOutputStream("E:\\Demo\\poi.xls");
	wb.write(fout);//Workbook提供了write的方法
	fout.close();//将输出流关闭

}

2.1.2新建sheet页

在新建工作簿的基础上新建sheet页,wb.createSheet() 返回一个Sheet()如果不进行操作不用接收

这里省略了main方法

/**
	 * 多态实现
	 * HSSFWorkbook  是对于xls进行操作
	 */
	Workbook wb=new HSSFWorkbook();//新建一个工作簿
	/**
	 * 导出所以用到输出流
	 */
	FileOutputStream fout=new FileOutputStream("E:\\Demo\\poi.xls");
	/**
	 * 有有参和无参数两种
	 * 参数为sheet页的名字
	 * 不写参数默认名字为sheet0到n
	 */
	Sheet sheet1 = wb.createSheet();//创建一个sheet页
	Sheet sheet2 = wb.createSheet("第二个sheet页");//创建第二个sheet页
	wb.write(fout);
	fout.close();//将输出流关闭

2.1.3新建行和列

创建行要在sheet页的基础上,单元格在行的基础上创建,每一行一个行对象Row

对于单元格赋值cell对象setCellValue()就可以,而且行和单元格的创建都从0 开始

列的值可以设置的类型也比较多样 int  double  String boolean  Date 等都是可以的

Workbook wb=new HSSFWorkbook();//新建一个工作簿
	FileOutputStream fout=new FileOutputStream("E:\\Demo\\poi.xls");
	Sheet sheet= wb.createSheet("第一个sheet页");//创建一个sheet页
	Row row=sheet.createRow(0); // 创建一个行 第一行
	Cell cell=row.createCell(0); // 创建一个单元格  第1列
	/**
	 * 给单元格设置值
	 *值类型可以为int  double  String boolean  
	 *还有Date等
	 */
	cell.setCellValue(1);
	row.createCell(1).setCellValue(1.2);//创建第一行第二个单元格
	row.createCell(2).setCellValue("这是一个单元格");//创建第一行第三个单元格
	row.createCell(3).setCellValue(false);//创建第一行第四个单元格
	/**
	 * HSSFCell一些静态常量
	 * short类型和int类型
	 */
	row.createCell(4).setCellValue(HSSFCell.ENCODING_COMPRESSED_UNICODE);
	/**
	 * 第二个行  每一行需要一个行对象
	 * 所以需要保存一个行对象
	 */
	Row row1 = sheet.createRow(1);
	row1.createCell(0).setCellValue("第二行第一列");
	row1.createCell(1).setCellValue(true);
	row1.createCell(2).setCellValue("第二行第三列");
	row1.createCell(3).setCellValue("第二行第四列");
	wb.write(fout);//输出
	fout.close();

2.1.4时间格式的单元格

由于很多代码都是重复的也出现了多次我在这,也就不写在笔记里了,只摘取了关键部分

CreationHelper  一个小工具类,使用工作簿创建Workbook getCreationHelper()

CellStyle  单元格的样式类,也是使用Workbook创建createCellStyle()

Row row=sheet.createRow(0); // 创建一个行 第一行
	Cell cell=row.createCell(0); // 创建一个单元格  第1列
	cell.setCellValue(new Date());
	/**
	 * 小工具 
	 * 使用工作簿获取
	 */
	CreationHelper  creationHelper=wb.getCreationHelper();
	/**
	 * 单元格样式类 
	 * 使用工作簿Workbook创建
	 */
	CellStyle  cellStyle=wb.createCellStyle();
	/**
	 * 设置时间的显示格式
	 */
	cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("yyyy-mm-dd :hh:mm:ss"));
	cell=row.createCell(1);//创建第二列
	cell.setCellValue(new Date());
	/**
	 * 设置单元格的格式
	 */
	cell.setCellStyle(cellStyle);
	/**
	 * 第三列和第二列的效果是一样的
	 */
	cell=row.createCell(2);//创建第三列
	/**
	 * Calendar 日历类 也可以用来获取时间
	 */
	cell.setCellValue(Calendar.getInstance());
	cell.setCellStyle(cellStyle);

剩下的内容将在下面的博客持续更新,有什么问题的地方欢迎大家指正,大家共同进步

猜你喜欢

转载自blog.csdn.net/yjt520557/article/details/82763785
今日推荐