java Excel的三种解析
1.POI 是apche软件基金会的开源函数库 提供api对microsoft office格式档案读写功能
2.HSSFF 纯java代码读取 写入 修改 EXcel文件 (2007以下版本) 还要xssf (对2007以上版本的excel) HWPF等(对word)
3.itext.jar 可以生成pdf文件
4. JXL 开源项目 可以对excel进行创建 修改 更新 包括设置字体 颜色 背景等等
5.fastExcel 纯java开发的excel文件读写组件 支持excel97-2003文件格式 只能读取单元格字符信息 但是只需要很小的内存 效率高
主要是POI 和JXL
POI操作效率高 但是操作复杂 支持公式 宏
JXL效率低 但是操作简单 格式不如POI强大
maven引入三方
<!-- https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl -->
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
</dependencies>
//创建工作薄
WritableWorkbook workbook = Workbook.createWorkbook(out);
//创建sheet
WritableSheet sheet=workbook.createSheet("sheet1",0);
//单元格
Label label=null;
//数组存表头
String[] title={"id","name","sex"};
//设置列名
for(int i=0;i<title.length;i++){
label=new Label(i,0,title[i]);
sheet.addCell(label);
}
for(int i=1;i<10;i++){
//第一列 new Label(0,i,"a"); 0是列 i是行
label =new Label(0,i,"a");
sheet.addCell(label);
//第二列
label =new Label(1,i,"user");
sheet.addCell(label);
//第三列
label =new Label(2,i,"男");
sheet.addCell(label);
}
//写入数据
workbook.write();
workbook.close();
如果要访问url就能下载文件 那么返回到要是一个流
@GetMapping(value = "excel")
public void excel(HttpServletResponse response) throws IOException, WriteException {
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=car_test.xls");
ServletOutputStream out=response.getOutputStream();
//创建工作薄
WritableWorkbook workbook = Workbook.createWorkbook(out);
//创建sheet
WritableSheet sheet=workbook.createSheet("sheet1",0);
//单元格
Label label=null;
//数组存表头
String[] title={"id","name","sex"};
//设置列名
for(int i=0;i<title.length;i++){
label=new Label(i,0,title[i]);
sheet.addCell(label);
}
for(int i=1;i<10;i++){
//第一列 new Label(0,i,"a"); 0是列 i是行
label =new Label(0,i,"a");
sheet.addCell(label);
//第二列
label =new Label(1,i,"user");
sheet.addCell(label);
//第三列
label =new Label(2,i,"男");
sheet.addCell(label);
}
//写入数据
workbook.write();
workbook.close();
out.flush();
out.close();
}