使用Apache的poi导出Excel

本文详细介绍了如何在Java项目中使用poi插件导出Excel文件,包括下载、添加依赖、创建工作簿、填充内容及输出流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两天在做一个项目,要用到导出excel的功能,因为以前没使用过这个功能,和我一起学习吧

  首先你要下载最新的poi插件。在java中使用ssh框架的时候你就没有必要自己下载poi了,因为在你添加框架支持的时候spring已经为你添加了poi插件,有现成的干嘛不用呢。

下载完毕


在项目里面添加poi的支持jar包。

接下来就是进行开发

首先就是创建一个工作薄,在官方文档里面有标准的创建代码可以参考

在这个里面有两个东东不知道你发现了没有HSSF和XSSF。知道他们的区别吗??其实你google也是可以找到的

其实在官方文档里面有明确的说明,

HSSF是POI项目的纯Java实现的Excel'97(-2007)文件格式。 XSSF是POI项目的纯Java实现Excel 2007中的。xlsx(OOXML)文件格式。

HSSF和XSSF提供电子表格的创建,修改,读取和写入XLS电子表格的方式来阅读。

我用的是Hssf

好了创建完工作薄之后就是创建单元格了,我在这边也不啰嗦太多,直接贴代码,因为在官方API文档里面都有现成的指南

HSSFWorkbook wb=new HSSFWorkbook();  
 HSSFSheet sheet=wb.createSheet();  
 HSSFRow row=sheet.createRow(0);  
   
 HSSFCell cell=row.createCell((short)0);  
 cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
 cell.setCellValue("序号");  
   
 cell=row.createCell((short)1);  
 cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
 cell.setCellValue("商品名称");  
   
 cell=row.createCell((short)2);  
 cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
 cell.setCellValue("商品条码");  
   
 cell=row.createCell((short)3);  
 cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
 cell.setCellValue("商品价格");  
   
 cell=row.createCell((short)4);  
 cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
 cell.setCellValue("送货商家");  
   
 cell=row.createCell((short)5);  
 cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
 cell.setCellValue("商家地址");  
   
 cell=row.createCell((short)6);  
 cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
 cell.setCellValue("联系电话");  


好了一个excel文件创建的大部分任务完成现在就是填充文件内容


List<Goods> goods=this.findAll();  
   
 for(int i=0;i<goods.size();++i){  
   
 Goods g=goods.get(i);  
 row=sheet.createRow(i+1);  
    
 cell=row.createCell((short)0);  
 cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
 cell.setCellValue(i+1);  
    
 cell=row.createCell((short)1);  
 cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
 cell.setCellValue(g.getGoodsname());  
    
 cell=row.createCell((short)2);  
 cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
 cell.setCellValue(g.getBarcode());  
    
 cell=row.createCell((short)3);  
 cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
 cell.setCellValue(g.getPrice());  
    
 cell=row.createCell((short)4);  
 cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
 cell.setCellValue(g.getGoodsprovides().getProName());  
    
 cell=row.createCell((short)4);  
 cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
 cell.setCellValue(g.getGoodsprovides().getProAddress());  
    
 }  

最后就是创建IO流,输出就ok

File file=new File("test.xls");  
 OutputStream out;  
 InputStream sin = null;  
 try {  
 out = new FileOutputStream(file);  
 wb.write(out);  
 out.close();  
 } catch (Exception e) {  
 e.printStackTrace();  
 }  
 try {  
 sin=new FileInputStream(file);  
 } catch (FileNotFoundException e) {  
 e.printStackTrace();  
 }  
   
 return sin;

转载于:https://my.oschina.net/kkrgwbj/blog/312008

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值