第一节、创建工作薄
package com.cn.util;
import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Workbook; /** * 1.创建工作薄 * */ public class CreateExcel_01 { public static void main(String[] args) throws Exception { //1.定义一个新的工作薄 Workbook wb=new HSSFWorkbook(); //2.获取输出路径 FileOutputStream os=new FileOutputStream("d:\\user.xls"); //3.将这个工作簿安装这个路径输出 wb.write(os); //4.关闭输出流 os.close(); System.out.println("结束"); } } |
第二节、创建sheet页
package com.cn.util;
import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Workbook; /** * 创建sheet页 * */ public class CreateSheet_02 { public static void main(String[] args) throws Exception { Workbook wb=new HSSFWorkbook(); //创建第一个sheet wb.createSheet("sheet1"); //创建第二个sheet wb.createSheet("sheet2"); //获取输出路径 FileOutputStream os=new FileOutputStream("d:\\user.xls"); //将这个工作簿按照这个路径输出 wb.write(os); //关闭输出 os.close(); System.out.println("结束"); } } |
第三节、创建单元格
package com.cn.util;
import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook;
/** * 3、创建单元格 * */ public class CreateSpace_03 { public static void main(String[] args) throws Exception { //1.创建工作薄 Workbook wb=new HSSFWorkbook(); //2.创建sheet Sheet sheet=wb.createSheet("sheet1"); //3.创建第一行,第一行的索引为0 Row row=sheet.createRow(0); //4.创建第一行的第一列 Cell cell1=row.createCell(0); //5.给第一行第一列设置值 cell1.setCellValue("编号"); //6.给第一行第二列设置值 row.createCell(1).setCellValue(false); //7.给第一行第三列设置值 row.createCell(2).setCellValue("用户名"); //8.创建第二行 row=sheet.createRow(1); //9.给第二行第一列设置值 row.createCell(1).setCellValue(1);
//1O.通过文件输出流获得输出路径 FileOutputStream os=new FileOutputStream("D:\\user.xls"); //11、将工作簿按照这个路径输出 wb.write(os); //12、关闭输出 os.close(); System.out.println("结束"); } } |
第四节、设置时间单元格
package com.cn.util;
import java.io.FileOutputStream; import java.util.Date; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook;
/** * 处理时间格式单元格 * */ public class SetTimeFormat_04 { public static void main(String[] args) throws Exception { //1.创建工作簿 Workbook wb=new HSSFWorkbook(); //2.创建sheet页 Sheet sheet=wb.createSheet("sheet1"); //3.创建行 Row row=sheet.createRow(0); //4.给第一行第一列设置日期时间 row.createCell(0).setCellValue(new Date());
//5.获得输出路径 FileOutputStream os=new FileOutputStream("D:\\user.xls"); //将工作簿按照这个路径写入 wb.write(os); System.out.println("结束"); } } |
此时输出的时间格式如下:
修改如下:
package com.cn.util;
import java.io.FileOutputStream; import java.util.Calendar; import java.util.Date; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.CreationHelper; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook;
/** * 处理时间格式单元格 * */ public class SetTimeFormat_04 { public static void main(String[] args) throws Exception { //1.创建工作簿 Workbook wb=new HSSFWorkbook(); //2.创建sheet页 Sheet sheet=wb.createSheet("sheet1"); //3.创建行 Row row=sheet.createRow(0); //4.给第一行第一列设置日期时间 /** * 针对时间格式问题,作出如下格式化 * */ CreationHelper ch=wb.getCreationHelper(); //创建单元格样式 CellStyle style=wb.createCellStyle(); //设置时间格式 style.setDataFormat(ch.createDataFormat().getFormat("yyyy-mm-dd hh:MM:ss")); Cell cell=row.createCell(0); cell.setCellValue(new Date()); cell.setCellStyle(style); //row.createCell(0).setCellValue(new Date());
//方式2:还可以通过如下方式获取时间日历的方式 cell=row.createCell(2); cell.setCellValue(Calendar.getInstance()); cell.setCellStyle(style);
//5.获得输出路径 FileOutputStream os=new FileOutputStream("D:\\user.xls"); //将工作簿按照这个路径写入 wb.write(os); System.out.println("结束"); } } |
结果如下:
注意:日期的单元格过短会出现######问题,此时应设置单元格为合适大小。
第五节、设置不同格式的单元格
package com.cn.util;
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.util.Date;
import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook;
/** * 设置不同格式的单元格 * */ public class SetDiffSpace_05 { public static void main(String[] args) throws Exception { //1.创建工作簿 Workbook wb=new HSSFWorkbook(); //2、创建sheet页 Sheet sheet=wb.createSheet(); //3.创建行 Row row=sheet.createRow(0); //4.为第一行第1列设置日期格式 row.createCell(0).setCellValue(new Date()); //5.为第一行第2列设置字符串格式 row.createCell(1).setCellValue("这是一个字符串格式"); //6.为第一行第3列设置boolean类型 row.createCell(2).setCellValue(false); //7.为第一行第4列设置数字类型 row.createCell(3).setCellValue(HSSFCell. //8.创建输出流 FileOutputStream os=new FileOutputStream("D:\\user.xls"); //9.写入到wb wb.write(os); //关闭 os.close(); System.out.println("结束"); } } |
第六节、遍历工作薄中行和列中的值
package com.cn.util;
import java.io.FileInputStream; import java.io.InputStream; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem;
/** * 遍历工作簿的行和列的取值 * */ public class ReadRowCellValue_06 { public static void main(String[] args) throws Exception { //输入流得到文件路径 InputStream is=new FileInputStream("D:\\user.xls"); POIFSFileSystem fs=new POIFSFileSystem(is); //创建工作薄 HSSFWorkbook wb=new HSSFWorkbook(fs); //获得第一个sheet页 HSSFSheet sheet=wb.getSheetAt(0); if(sheet==null){ return; } //先要遍历行 for(int rowNum=0;rowNum<=sheet.getLastRowNum();rowNum++){ HSSFRow row=sheet.getRow(rowNum); if(row==null){ continue; //如果有空行则跳过,然后继续下一行 } //遍历列 for(int cellNum=0;cellNum<=row.getLastCellNum();cellNum++){ HSSFCell cell=row.getCell(cellNum); if(cell==null){ continue; } System.out.println("--"+getValue(cell)); } }
} private static String getValue(HSSFCell cell){ if(cell. return String.valueOf(cell.getBooleanCellValue()); }else if(cell. return String.valueOf(cell.getNumericCellValue()); }else{ return String.valueOf(cell.getStringCellValue()); }
} } |
第七节、excel文本取值
package com.cn.util; import java.io.FileInputStream; import java.io.InputStream; import org.apache.poi.hssf.extractor.ExcelExtractor; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem;
/** * 遍历excel文本,取值 * */ public class ReadText_07 { public static void main(String[] args) throws Exception { //1.输入流 InputStream is=new FileInputStream("d:\\user.xls"); //2.POI文件 POIFSFileSystem fs=new POIFSFileSystem(is); //3.创建工作簿 HSSFWorkbook wb=new HSSFWorkbook(fs); //4. ExcelExtractor ee=new ExcelExtractor(wb); ee.setIncludeSheetNames(false); //设置不需要sheet页的名字 System.out.println(ee.getText()); } } |