快速上手 Apache POI
poi: Apache 旗下的输出和输出各种文档的组件: 比如我们要添加一级列表对应的二级分类;我们来感觉的是比较好的用处,或者想自如等租房的 app 在线生成 pdf 的实时合同功能;
http://poi.apache.org/ POI 官网链接:
quick Guide:
新建一个 Excel 的 POI;
提出依赖:pom.xml 中,Excel 中的格式现在大都是 xsl,xslx 的格式;
<!--xlsx(07)-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<!--日期格式化工具-->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.1</version>
</dependency>
<!--test-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
其中我们遇见的是 Maven 的可以直接对比,以及我们需要直接的直接我们可以将标志的着我们数据的转化过程中,maven 的依赖链接我们可以直接使用,如果说表现出红色或者是比较麻烦的颜色,我建议换个自己之前的 maven 的仓库自己再整一个;
我们开始使用一个新的文件进行数据的开发和使用: 我们可以直接使用 Apache 旗下的 project List 的 poi 的直接表开始 quick guide 的表示形式; 我们可以将数据直接变成自己,
开始快速指南的上手;
首先我们在最开始的时候,数据将 Excel 的表示格式直接展示出来,然后我们将数据的表示下转化成流的方式 比如(OutPutStream)的关系过程中,简单来说是根据编码的流式生成一个根据标准生成一个固定格式的文件;
Quick Guide:
package com.atweb;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.WorkbookUtil;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.xmlbeans.impl.xb.xsdschema.Public;
import org.junit.Test;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
/**
* @description poiExcel的newworkbook的比较
**/
public class ExcelPoiTest {
@Test
public void testo1ExcelPOI() throws IOException {
//生成简单的单元格的数据,直接生成一个标准的数据表格的;
Workbook wb = new XSSFWorkbook();
OutputStream fileout=new FileOutputStream("D:\\尚硅谷\\workbook2.xlsx");
String sheetSafeName=WorkbookUtil.createSafeSheetName("[cell单元格的注册信息表]");
Sheet wbSheet = wb.createSheet(sheetSafeName);
//新建单元格的和具体的初始数据;
Row wbSheetRow = wbSheet.createRow(6); //新建一行
Cell cell1 = wbSheetRow.createCell(0); //创建一个单元格
//赋值
cell1.setCellValue(1);
/**
* 确定当前行的值,然后我们呢直接将行数确定,展示单元格的具体cell的数字,然后set
* CreationHelper createHelper = wb.getCreationHelper(); //创建一个新的单元格的属性
* row.createCell(1).setCellValue(1.2);
* row.createCell(2).setCellValue(
* createHelper.createRichTextString("This is a string"));
*
*/
CreationHelper createHelper = wb.getCreationHelper();
Row row1 = wbSheet.createRow(0);
row1.createCell(0).setCellValue(createHelper.createRichTextString("申请日期"));
row1.createCell(1).setCellValue(createHelper.createRichTextString("2020-7-27 14:19:00"));
Row row2= wbSheet.createRow(1);
row2.createCell(0).setCellValue(createHelper.createRichTextString("姓名"));
row2.createCell(1).setCellValue(createHelper.createRichTextString("web"));
Row row3 = wbSheet.createRow(2);
row3.createCell(0).setCellValue(createHelper.createRichTextString("年龄"));
row3.createCell(1).setCellValue(createHelper.createRichTextString("21"));
wb.write(fileout);
fileout.close();
}
@Test
public void test02ExcelPOi() throws IOException {
//表示生成简单的sheet的工作表
Workbook wb = new XSSFWorkbook();
//文件输出流,name 后面跟一个地址
OutputStream fileOut = new FileOutputStream("D:\\尚硅谷\\workbook1.xlsx"); //创建输出流
//新建一个sheet的工作表的简单数据表
Sheet helloword = wb.createSheet("helloword");
//sheet如果是特殊字符需要
String safeName = WorkbookUtil.createSafeSheetName("[O'Brien's sales*?]"); // returns " O'Brien's sales "
Sheet safeSheet = wb.createSheet(safeName);
wb.write(fileOut);
fileOut.close();
//打印
System.out.println("新增sheet结构");
}
//新建一个Excel的文件,直接在Apache quick GUIDE快速指南
@Test
public void testPOiExcel() throws IOException {
//比较的数据2003版本的Excel的hss的版本使用过程中的,后缀名xls
Workbook wb = new XSSFWorkbook();
//文件输出流,name 后面跟一个地址
OutputStream fileOut = new FileOutputStream("D:\\尚硅谷\\workbook.xlsx"); //创建输出流
//将输出流写入wb
wb.write(fileOut);
fileOut.close();//关闭输出流
//打印
System.out.println("文件已经生成"+fileOut);
// //比较的数据2007版本的Excel的hss的版本使用过程中的,后缀名xlsx
// Workbook wb = new XSSFWorkbook();
//
// try (OutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
// wb.write(fileOut);
// }
}
}
这是我们自己写一个 EXcel 的展示;
现在我们要读取一个 Excel 的信息::
@Test //大文件的写入过程
public void testBigWrite() throws IOException {
Workbook wb=new HSSFWorkbook();
OutputStream fileOut=new FileOutputStream("D:\\LUCAS\\workbook4.xls");
String sheetSafeName=WorkbookUtil.createSafeSheetName("[cell单元格的注册信息表]");
Sheet wbSheet = wb.createSheet(sheetSafeName);
for (int cellrow = 0; cellrow < 10000; cellrow++) {
Row wbSheetRow = wbSheet.createRow(cellrow);
for (int cell = 0; cell < 100; cell++) {
wbSheetRow.createCell(cell).setCellValue(cellrow+"-"+cell);
}
}
wb.write(fileOut);
fileOut.close();//必须关闭
//打印
System.out.println("文件输出"+fileOut.hashCode());
System.out.println("文件输出"+fileOut);
}
版权声明: 本文为 InfoQ 作者【卢卡多多】的原创文章。
原文链接:【http://xie.infoq.cn/article/8c0ca4b2bbd246eecbd46009a】。文章转载请联系作者。
卢卡多多
努力寻找生活答案的旅途者 2020.04.12 加入
公众号:卢卡多多,欢迎一起交流学习
评论