Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
结构:
-
- HSSF - 提供读写Microsoft Excel格式档案的功能。
- XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
- HWPF - 提供读写Microsoft Word格式档案的功能。
- HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
- HDGF - 提供读写Microsoft Visio格式档案的功能。
使用必须引入依赖
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.15</version> </dependency>
1.写入Excel2003版本
/** * 写入excel的方法, 07之前的版本,文件类型为.xls * 07及07之后的版本,文件类型为.xlsx * @throws Exception */ public static void writeExcel03() throws Exception{ /* * * 这是最基本的创建excel的方法,所有的值都给的固定值。 * */ //创建新excel文档,07版本之前均可以这么写 HSSFWorkbook workbook = new HSSFWorkbook(); //新建工作表 HSSFSheet sheet = workbook.createSheet("test"); //新建行 HSSFRow row = sheet.createRow(0); //取第一行第一列 HSSFCell cell = row.createCell(0); //给第一行第一列赋值 cell.setCellValue("我是谁?"); //将新建的工作表保存到硬盘中 FileOutputStream fos = new FileOutputStream(new File("C:\Users\admin\Desktop\aa.xls")); workbook.write(fos); fos.close(); }
2.写入Excel2007版本
/* * 创建07及以后excel的写法 * * */ public static void writeExcel07() throws Exception{ /* * 创建07之后的版本使用的工厂类为XSSFWorkbook * * */ //创建新表格文件 XSSFWorkbook workbook = new XSSFWorkbook(); //创建新表单 XSSFSheet sheet = workbook.createSheet("test07"); //创建sheet表单中的行 XSSFRow row = sheet.createRow(0); //选取行中对应的列 XSSFCell cell = row.createCell(0); //给对应的列中赋值 cell.setCellValue("test"); //输出创建的文件,存储到硬盘中 FileOutputStream fos = new FileOutputStream(new File("C:\Users\admin\Desktop\test.xlsx")); //workbook的write方法调用,不能忘啊 workbook.write(fos); fos.close(); }
3.读取Excel03以及07版本
/* * 在实际应用中,在读取文件的时候,我们不一定确定读取的excel的具体版本,所以,在输入和输出的语句需要添加判断来让其适应不同的版本 * * */ public static void readExcel03and07() throws Exception{ //读取文件的路径 String filepath = "C:\Users\admin\Desktop\07.xlsx"; //判断文件的格式, if(filepath.matches("^.+\.(?i)((xls)|(xlsx))$")){ FileInputStream fis = new FileInputStream(filepath); boolean is03Excel = filepath.matches("^.+\.(?i)((xls))$")?true:false; //判断是2003还是2007 Workbook workbook = is03Excel ? new HSSFWorkbook(fis):new XSSFWorkbook(fis); // Workbook workbook = new XSSFWorkbook(fis); Sheet sheet = workbook.getSheetAt(0); Row row = sheet.getRow(0); Cell cell = row.getCell(0); System.out.println("第一行第一列的数据是:"+cell.getStringCellValue()); } }