主页 > 开源代码  > 

【Java】POI解析excel


一、相关介绍

POI技术

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

poi-ooxml能解析xls,xlsx。

poi能解析word、ppt、excel、xml等office软件

导入坐标:

<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> 二、使用案例 通过Poi操作Excel十分方便:

使用 WorkbookFactory类 的create()方法解析出excel所有数据

将一个Excel抽象为一个Workbook:

sheets 对象中保存了excel中所有的数据

一个表单页抽象为Sheet,表单中的一行抽象为Row,一行中的一个单元格可以抽象为Cell。

HSSFWorkbook对应的是97-03格式(.xls) XSSFWorkbook对应的是07格式的(.xlsx)

Workbook的获取——可以通过WorkbookFactory

根据传入excel文件的类型来调用不同的实现类(子类):

WorkbookFactory——创建Workbook;

1、读: //Excel 解析 去读 写入 poi esaypoi 1、输入流加载excel文件 2、使用POI解析excel—— Workbook sheets = WorkbookFactory.create(fis) ———— sheets 对象中保存了excel中所有的数据 3、获取指定sheet ———— Sheet sheet = sheets.getSheetAt(0) ———— getSheetAt——根据索引索取 4、获取所有row ———— Row row = sheet.getRow(3);//获取第四行 5、获取所有cell ————— Cell cell = row.getCell(1);//获取第二列 //getCell重载的方法【丢失单元格策略】:如果cell不是空,不做任何事; //如果单元格是空的,默认返回一个null,则new一个Cell()返回 保证不会报空指针 Cell cell = row.getCell(j, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK); 6、获取所有cell中的内容———— cell.getStringCellValue() cell.setCellType(CellType.STRING);//强行把cell的类型设置为String //防止报错:Cannot get a STRING value from a NUMERIC cell 2、写——回写 修改

回写——基于最大的sheets对象来回写 因为sheet、row、cell可能都有改动 回写可以写到已经有的文件或者不存在的文件:

如果是已经存在的文件,那么会清空再写进去,有风险 如果是不存在的文件,那么会新建 如果文件已经打开,那么写不进去

public class WriteExcel { public static void main(String[] args) throws Exception { //2、修改excel //2.1创建流 FileInputStream fis2 = new FileInputStream("src/test/resources/例子.xlsx"); //2.2使用POI解析excel Workbook sheets = WorkbookFactory.create(fis2); fis2.close(); //2.3 获取指定sheet Sheet sheet2 = sheets.getSheetAt(0); //2.4 获取指定row Row row2 = sheet2.getRow(3); //2.5 获取指定cell Cell cell2 = row2.getCell(1); //2.6 修改cell内容 cell2.setCellValue("我安撕家"); /* 其实是把内容都拿到放在sheets里面,修改一个,再写进去,相当于删除掉重新写入 */ FileOutputStream fos2 = new FileOutputStream("src/test/resources/例子回写.xlsx"); sheets.write(fos2); } } 3、写——创建 public class CreateExcelLearn { //创建excel 0、在盘下创建一个文件夹 1、定义工作薄,创建HSSFWorkbook对象(excel的文档对象) 2、创建输出流 3、建立新的sheet对象(excel的表单)Sheet sheet = sheets.createSheet(sheet名称); // Row row = sheet.createRow(0); // Cell cell = row.createCell(0); // cell.setCellValue("具体要填写的内容"); 4、将workbook写入流 5、关流 public static void main(String[] args) throws Exception { /* 在盘下创建一个文件夹 */ String directory = "/Users.."; File file = new File(directory); // 创建文件夹对象 if (!file.exists()) {// 如果不存在就创建 file.mkdirs(); } //HSSFWorkbook implements Workbook //1、定义工作薄,创建HSSFWorkbook对象(excel的文档对象) Workbook wb = new HSSFWorkbook(); //2、创建输出流 FileOutputStream fileout = new FileOutputStream("/Users/..创建.xls"); // 3、建立新的sheet对象(excel的表单) Sheet sheet = wb.createSheet("Sheet页1");// 定义sheet页面 // 4、在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一 Row row = sheet.createRow(0);// 创建第一行 Cell cell = row.createCell(0);// 创建一个单元格,第一列。 cell.setCellValue("cy的第一行第一列");//设置值 //5、设置第一行 第二列为3 row.createCell(1).setCellValue(3); wb.createSheet("Sheet页2");// 定义sheet页面 // 6、将workbook写入流 wb.write(fileout); // 7、关闭输出流 fileout.close(); }

标签:

【Java】POI解析excel由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【Java】POI解析excel