要用 java 生成 Excel表格 ,就先学会怎么生成一个 Excel表格产生数据 和 读取Excel 表格中的数据 由于 Excel表格 的格式有.xls 和 .xlsx, 那么就看下 下面是如何操作的
首先需要的jar包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.15</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.15</version> </dependency> <dependency> <groupId>org.apache.xmlbeans</groupId> <artifactId>xmlbeans</artifactId> <version>2.6.0</version> </dependency> 理解下下面将会用到的对象 对象作用HSSFWorkbookexcel的文档对象 (07之前的版本)HSSFSheetexcel的表单HSSFRowexcel的行HSSFCellexcel的格子单元XSSFWorkbookexcel的文档对象 (07之后的版本) 写测试类 @Test public void write() throws Exception { //创建新工作簿 HSSFWorkbook workbook = new HSSFWorkbook(); //新建工作表 HSSFSheet sheet = workbook.createSheet("hello"); //创建行,行号作为参数传递给createRow()方法,第一行从0开始计算 HSSFRow row = sheet.createRow(0); //创建单元格,row已经确定了行号,列号作为参数传递给createCell(),第一列从0开始计算 HSSFCell cell = row.createCell(2); //设置单元格的值,即C1的值(第一行,第三列) cell.setCellValue("hello sheet"); //输出到磁盘中 FileOutputStream fos = new FileOutputStream(new File("F:\\测试.xls")); workbook.write(fos); workbook.close(); fos.close(); }运行如下:
@Test public void read() throws Exception { //创建输入流 FileInputStream fis = new FileInputStream(new File("F:\\测试.xls")); HSSFWorkbook workbook = new HSSFWorkbook(fis); HSSFSheet sheet = workbook.getSheetAt(0); //获取行,行号作为参数传递给getRow方法,第一行从0开始计算 HSSFRow row = sheet.getRow(0); //获取单元格,row已经确定了行号,列号作为参数传递给getCell,第一列从0开始计算 HSSFCell cell = row.getCell(2); //设置单元格的值(第一行,第三列) String cellValue = cell.getStringCellValue(); System.out.println("第一行第三列的值是" + cellValue); workbook.close(); fis.close(); }运行结果:第一行第三列的值是hello sheet 以上的是.xls 格式, 接着我们在看下 .xlsx格式
@Test public void write07() throws Exception { //创建工作簿 XSSFWorkbook workbook = new XSSFWorkbook(); //新建工作表 XSSFSheet sheet = workbook.createSheet("hello"); //创建行,0表示第一行 XSSFRow row = sheet.createRow(0); //创建单元格行号由row确定,列号作为参数传递给createCell;第一列从0开始计算 XSSFCell cell = row.createCell(2); //给单元格赋值 cell.setCellValue("hello sheet"); //创建输出流 FileOutputStream fos = new FileOutputStream(new File("F:\\测试.xlsx")); workbook.write(fos); workbook.close(); fos.close(); } @Test public void read07() throws Exception { //创建输入流 FileInputStream fis = new FileInputStream(new File("F:\\测试.xlsx")); //由输入流得到工作簿 XSSFWorkbook workbook = new XSSFWorkbook(fis); //得到工作表 XSSFSheet sheet = workbook.getSheet("hello"); //得到行,0表示第一行 XSSFRow row = sheet.getRow(0); //创建单元格行号由row确定,列号作为参数传递给createCell;第一列从0开始计算 XSSFCell cell = row.getCell(2); //给单元格赋值 String cellValue = cell.getStringCellValue(); System.out.println("值是"+cellValue); workbook.close(); fis.close(); }由于在正常的开发项目中,读取的时候,有的用户 用.xls 或者 .xlsx 格式,那么就用以下的方法解决:
boolean is03Excell = filePath.matches("^.+\\.(?i)(xls)$")?true:false; Workbook workbook = is03Excell ? new HSSFWorkbook(fis):new XSSFWorkbook(fis);