1.POI简单介绍
Apache POI 是用Java 编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对 Microsoft Office 格式档案读和写的功能
- HSSF 提供读写Microsoft Excel XLS格式档案的功能。
- XSSF 提供读写Microsoft Excel OOXML XLSX格式档案的功能。
- HWPF 提供读写Microsoft Word DOC格式档案的功能。
- HSLF 提供读写Microsoft PowerPoint格式档案的功能。
- HDGF 提供读Microsoft Visio格式档案的功能。
- HPBF 提供读Microsoft Publisher格式档案的功能。
- HSMF 提供读Microsoft Outlook格式档案的功能。
2.步骤
1.环境配置:导入jar包
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.16</version></dependency>
2.创建一个Excel工作簿
@Testpublic void test() throws IOException {//定义一个工作蒲Workbook wb = new HSSFWorkbook();//定义一个输出流FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel工作蒲.xls");//写入在输出流 wb.write(fileOutputStream);//关闭输出流 fileOutputStream.close(); }
3.创建一个sheet页
@Testpublic void sheet() throws IOException {//定义一个工作蒲Workbook wb = new HSSFWorkbook();//创建sheet页面wb.createSheet("第一个sheet页"); wb.createSheet("第二个sheet页");//定义一个输出流FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel工作蒲带有sheet页.xls");//写入在输出流 wb.write(fileOutputStream);//关闭输出流 fileOutputStream.close(); }
4.创建行和列
@Testpublic void row() throws IOException {//定义一个工作蒲Workbook wb = new HSSFWorkbook();//创建sheet页面Sheet sheet = wb.createSheet("学生信息sheet页");//创建一行Row row = sheet.createRow(0);//创建一个单元格Cell cell =null;for(int i = 0 ;i<5;i++){ row.createCell(i).setCellValue("写入信息:单元格内容"+i); }//定义一个输出流FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel学生信息.xls");//写入在输出流 wb.write(fileOutputStream);//关闭输出流 fileOutputStream.close(); }
5.创建一个时间样式到Excel
@Testpublic void date() throws IOException {//定义一个工作蒲Workbook wb = new HSSFWorkbook();//创建sheet页面Sheet sheet = wb.createSheet("时间sheet页");//创建一行Row row = sheet.createRow(0);//创建一个单元格Cell cell = row.createCell(0); cell.setCellValue(new Date()); CreationHelper creationHelper = wb.getCreationHelper();//设置单元格样式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);//定义一个输出流FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel日期格式.xls");//写入在输出流 wb.write(fileOutputStream);//关闭输出流 fileOutputStream.close(); }
6.单元格对其方式及行高
@Testpublic void style() throws IOException {//定义一个工作蒲Workbook wb = new HSSFWorkbook();//创建sheet页面Sheet sheet = wb.createSheet("第一个sheet");//创建一行Row row = sheet.createRow(0);//设置行高row.setHeightInPoints(30);//创建一个单元格createCell(wb,row,(short)0,HSSFCellStyle.ALIGN_CENTER,HSSFCellStyle.VERTICAL_BOTTOM); createCell(wb,row,(short)1,HSSFCellStyle.ALIGN_JUSTIFY,HSSFCellStyle.VERTICAL_CENTER); createCell(wb,row,(short)2,HSSFCellStyle.ALIGN_CENTER_SELECTION,HSSFCellStyle.VERTICAL_JUSTIFY);//定义一个输出流FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel样式.xls");//写入在输出流 wb.write(fileOutputStream);//关闭输出流 fileOutputStream.close(); }/** * 创建一个单元格设置对应的对其方式 * @param workbook 工作蒲 * @param row 行 * @param column 列 */private static void createCell(Workbook workbook, Row row, short column,short halign,short valign){ Cell cell = row.createCell(column);//创建单元格cell.setCellValue(new HSSFRichTextString("我是富文本"));//设置值CellStyle cellStyle = workbook.createCellStyle();//创建样式cellStyle.setAlignment(halign);//设置单元格水平方向对其方式cellStyle.setVerticalAlignment(valign);//设置单元格垂直方向对其方式 cell.setCellStyle(cellStyle); }
合并单元格
@Testpublic void test1() throws IOException {//定义一个工作蒲Workbook wb = new HSSFWorkbook();//创建sheet页面Sheet sheet = wb.createSheet("第一个sheet");//创建一行Row row = sheet.createRow(1);//设置行高row.setHeightInPoints(30);//创建一个单元格Cell cell = row.createCell(1); cell.setCellValue("合并单元格");//合并单元格(起始行,结束行,起始列,结束列)sheet.addMergedRegion(new CellRangeAddress(1,2,1,2));//定义一个输出流FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel样式.xls");//写入在输出流 wb.write(fileOutputStream);//关闭输出流 fileOutputStream.close(); }