poi 架包导出excel,并下载

导出excel在许多系统中都有应用到,这里以两个简单例子作为介绍:

1、导入poi-3.9.jar,可以在官网下载http://poi.apache.org 。

2、先写一个简单的测试类,里面有详细的解释,代码如下:

 1 import java.io.FileOutputStream;
 2 import java.io.IOException;
 3 import org.apache.poi.hssf.usermodel.HSSFCell;
 4 import org.apache.poi.hssf.usermodel.HSSFRow;
 5 import org.apache.poi.hssf.usermodel.HSSFSheet;
 6 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 7 import org.junit.Test;
 8
 9 public class outputExcel {
10     @Test
11     public void outPutExcel() throws IOException{
12         FileOutputStream fos=new FileOutputStream("D://data.xls");
13         //写入excel的数据,这个数据你根据自己的情况,从数据库中读取。
14         String[][] data={{"0001","xx局","00"},{"0002","xx局A机构","00"},{"0003","xx局B机构","00"}};
15         HSSFWorkbook workBook=null;
16         String[] title={"单位代码","单位名称","上级单位代码"}; //excel第一行的标题
17         workBook=new HSSFWorkbook();   //创建Excel
18         HSSFSheet sheet=workBook.createSheet("导出数据情况");     //工作表
19         HSSFRow row=sheet.createRow(0);        //行,默认从0开始
20         HSSFCell cell=null;     //列,和行对应,每次创建一行,就要创建与该行对应的列
21         //第一行输入标题
22         for(int j=0;j<title.length;j++){
23             cell=row.createCell(j);
24             cell.setCellValue(title[j]);
25         }
26         //写入数据到excel
27         for(int t=0;t<data.length;t++){
28             row=sheet.createRow(t+1);     //从第二行开始创建,前面已经创建过第一行标题
29             for(int k=0;k<3;k++){
30                 cell=row.createCell(k);
31                 cell.setCellValue(data[t][k]);
32             }
33         }
34         try {
35             workBook.write(fos);    //将excel通过数据流写出
36             fos.flush();
37             fos.close();
38         }finally{
39             if(fos!=null){
40                 fos.flush();
41                 fos.close();
42             }
43         }
44     }
45 }

运行上面的代码就可以在D盘看到data.xls这个导出文件了。

打开如下:

在这里还要强调一点:在为列设置值的时候有人往往使用 cell.setCellValue(new HSSFRichTextString(title[j])); 这是很不好的习惯,因为如果数据量很大,那么new HSSFRichTextString()就可能导致内存崩溃。

3、上面这种方式是写死的路径导出,而且在实际应用中往往不会这么写的,excel文件要么保存在服务器的某个文件下,要么从数据库中获取数据来创建,然后用户通过下载来获取。

下面就来介绍,在service层返回一个workBook给controller层实现下载,代码如下:

 1 @Service
 2 public class OutPutExcelService {
 3     @Autowired
 4     private AccBookDao accBookDao;
 5     @Autowired
 6     private AssetCardDao assetCardDao;
 7     @Autowired
 8     private GlDefDao glDefDao;
 9     @Autowired
10     private IpCompanyDao ipCompanyDao;
11
12     @SuppressWarnings("unchecked")
13     public HSSFWorkbook outPutExcel(String nd,String co_code){
14         HSSFWorkbook workBook=null;
15         String[] title={"单位代码","单位名称","上级单位代码","公共档案","总账数据","固定资产数据"};
16         //参数定义
17         Map<String, Object> param=new HashMap<String, Object>();
18         param.put("co_code", co_code);
19         //获取单位代码、单位名称、上级单位代码
20         List<PageVo> dwList=ipCompanyDao.findPageByCode(param);
21         //根据dwList查询其他表数据
22         List<String> data=new ArrayList<String>();
23         for(int i=0;i<dwList.size();i++){
24             data.add(dwList.get(i).getCo_code());
25             data.add(dwList.get(i).getCo_name());
26
27             String dw_code=dwList.get(i).getCo_code();
28             Map<String, Object> param2=new HashMap<String, Object>();
29             param2.put("nd", nd);
30             param2.put("dw_code", dw_code);
31
32             data.add(ipCompanyDao.selectPCoCode(dw_code));
33
34             if(accBookDao.selectAccBookNo(param2)!=null){
35                 data.add("已导入");
36             }else{
37                 data.add("无");
38             }
39             if(glDefDao.selectAccBookNo(param2)!=null){
40                 data.add("已导入");
41             }else{
42                 data.add("无");
43             }
44             if(assetCardDao.selectAssetNo(param2)!=null){
45                 data.add("已导入");
46             }else{
47                 data.add("无");
48             }
49         }
50         workBook=new HSSFWorkbook();   //创建Excel
51         HSSFSheet sheet=workBook.createSheet("导出数据情况");     //工作表
52         HSSFRow row=sheet.createRow(0);        //行
53         HSSFCell cell=null;     //列
54         //第一行输入标题
55         for(int j=0;j<title.length;j++){
56             cell=row.createCell(j);
57             cell.setCellValue(title[j]);
58         }
59         //写入数据到excel
60         for(int t=0;t<data.size()/6;t++){
61             row=sheet.createRow(t+1);
62             for(int k=0;k<6;k++){
63                 cell=row.createCell(k);
64                 cell.setCellValue(data.get(t*6+k));
65             }
66         }
67         return workBook;
68     }
69 }

这里返回一个workBook给controller层,然后controller层调用这个方法获取,实现获取前台数据和返回数据给前台。http://www.cnblogs.com/yaket/p/5830531.html

时间: 2024-10-11 17:52:48

poi 架包导出excel,并下载的相关文章

apache poi根据模板导出excel

需要预先新建编辑好一个excel文件,设置好样式. 编辑好输出的数据,根据excel坐标一一对应. 支持列表数据输出,列表中列合并. 代码如下: package com.icourt.util; import org.apache.commons.collections4.CollectionUtils; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.user

JAVA 通过POI 模版,导出excel

如有不足,欢迎指正,谢谢 ! 1.Maven引入  POI jar包.模版和结果文件.rar下载 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0.1</version> </dependency><dependency> <groupId>net.sf.jxl

list数据导出excel并且下载到本地

最近做grid列表相关数据导出到excel功能,根据自己选择的列导出成excel 并且下载到本地.下载位置根据配置文件进行的配置.废话不说 直接上关键代码: 需要引入相关的包: compile 'net.sourceforge.jexcelapi:jxl:2.6.12'这是我项目中gradle的配置. @Override public void exportExcel(Integer[] ids,HttpServletResponse response) { List<WithdrawDepos

Java使用POI实现数据导出excel报表

在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅仅简单的读取office中的数据.尤其是在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.而数据导出的格式一般是EXCEL或者PDF .所以今天我们来简单看一下利用Apache  POI实现数据库中数据导出excel报表.在java中有很多实现数据导出excel报表的第三方jar包.但在比较了一下感觉还是POI相对来

POI 导入、导出Excel

POI,全称Apache POI,是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能.项目地址:Apache POI - the Java API for Microsoft Documents 1 导入 使用form表单(enctype="multipart/form-data")上传excel文件,后台接收MultipartFile文件格式. 读取excel private static final Str

Springboot导出Excel并下载

引入相关依赖 <!--数据导出excel--> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependenc

POI通过模板导出EXCEL文件

一般的EXCEL导出使用POI先创建一个HSSFWorkbook,然后通过不断创建HSSFRow,HSSFCell后设置单元格内容便可以完成导出. 这次在项目中需要用到模板,导出的内容包括(1.模板中的内容.样式.2.自己需要新增的内容.样式.),还需要设置单元格的样式,在网上搜了一些blog,完成后记录一下. 分析这次需求,最关键的就是如何获取到填充了模板的新HSSFWorkbook,如果获取到它,我们可以熟练的往里面添加内容. 1 File fi = new File("F:/usr/use

Java导出excel并下载功能

我们使用的导出并下载功能是利用一个插件叫POI的插件提供的导出功能,很实用:首先先导入Jar包: Jar包下载地址:http://poi.apache.org/   官方文档地址:http://poi.apache.org/spreadsheet/quick-guide.html Action代码: public void exportToExcel(List<PortalContactVO> data) throws Exception { this.setEnableAccessReque

使用apache的poi实现导入导出excel

1.jar包:poi-3.14-20160307.jar.poi-ooxml-3.14-20160307.jar 2.导入(本例实现了解析excel生成List): @Override public Map<String, Object> parseExcel(String fileName) { // 1.准备返回的变量 Map<String, Object> resultMap = new HashMap<String, Object>(); String mess