poI 以Excel导出数据

  1. 导入jar包,参考 http://zhuws.blog.51cto.com/11134439/1973698

2.步入正题,看代码

// 大致思路,先看本地文件存在不,如果不存在,把查询数据导出到Excel,然后再下载 代码有点乱

String filePath = request.getParameter("filePath");
filePath = new String( filePath.getBytes("iso-8859-1"), "UTF-8");
File filetemp = null;
byte[] fileContent = null;
filetemp = new File(filePath);
// 如果文件不存在 
if(!filetemp.exists()){
String title = "序号,统一社会信用代码或组织机构代码,企业名称,发证机关,获奖内容,发证日期,有效日期";
String key = ",ZZJGDM,QYMC,FZJG,HJNR,KSRQ,JSRQ";

String[] titles = title.split(",");
String[] keys = key.split(",");

   //-------------------POI保存数据到Excel----------------------// 
   // 第一步,创建Excel 工作薄对象
  HSSFWorkbook wb = new HSSFWorkbook();  
 // 第二步,创建Excel 工作表对象 
  HSSFSheet sheet = wb.createSheet("sheet1");
 // 设置表格默认列宽度为 30个 字节
  sheet.setDefaultColumnWidth((short)15);
// 设置样式 
HSSFCellStyle style = wb.createCellStyle();  
 style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
 
 //合并单元格  
 HSSFRow rows = sheet.createRow(0);
 // 0,1,0,titles.length-1 表示合并 第1,2行 从左边0列开始 到 titles.length-1 列结束
 CellRangeAddress region = new CellRangeAddress(0,1,0,titles.length-1);
 sheet.addMergedRegion(region);
 rows.createCell((short) 0).setCellValue(fileName);
 
// 创建 表格 标题栏 
HSSFRow row = sheet.createRow(2);
for(int i=0;i<titles.length;i++){
    HSSFCell cell = row.createCell(i);
    cell.setCellStyle(style);
    HSSFRichTextString text = new HSSFRichTextString(titles[i]);
    cell.setCellValue(text); 
}
	        
// 第五步, 假设 list是想要导出的数据
for(int i=0;i<list.size();i++){
        HashMap map =(HashMap)list.get(i); // 转换为HashMap 
        row = sheet.createRow(i+3); // 从第几行开始写入数据 
	for(int j = 0;j < keys.length;j++){
        if(j==0){
        	row.createCell((short) 0).setCellValue(i+1);
			continue;	        
        }
        // 日期格式处理 ,对日期截取后 例如: 2017-11-08
        if("KSRQ".equals(keys[j])||"JSRQ".equals(keys[j])){
            String str = map.get(keys[j])==null?"":map.get(keys[j])+"";
            if(!"".equals(str)){
	        row.createCell((short) j).setCellValue(str.substring(0,10));
            }
        }else if("XZXKFL".equals(keys[j])&&"51".equals(lx)){
            row.createCell((short) j).setCellValue("食品相关产品");
        }else{
            row.createCell((short) j).setCellValue(map.get(keys[j])==null?"":map.get(keys[j])+"");
        }
     }
} 

// 文件命名 
Calendar calendar = Calendar.getInstance();  
calendar.add(Calendar.DATE, 0);  
int year1 = calendar.get(Calendar.YEAR);// 月份  
int month1 = calendar.get(Calendar.MONTH) + 1;// 日期  
int date1 = calendar.get(Calendar.DATE);  
String d1 = year1 + "-" + month1 + "-" + date1;//2017-2-4
//拿到 事先定义好的静态变量 就是 所谓的二级目录 也是路径的一部分
//拼接路径 并且 创建文件夹
filePath = "D:\Zlxypt";
File dir = new File(filePath+year1+"/"+d1); //D:/Zlxypt/2017年/2017-2-4
if(!dir.exists()){
    dir.mkdirs();
}
String uuid = year1+UUID.randomUUID().toString();
String file_Name = year1+"/"+ d1 +"/" +uuid+".xls";
filePath += file_Name; //文件全路径名称 
// 更新 title 发布表 filePath
titleServices.updaTitleById(tid, file_Name);
 // 第六步,将文件存到指定位置  
try {
	FileOutputStream fout = new FileOutputStream(filePath); 
	wb.write(fout);  // 把数据写入 excel中
	fout.close();  
	wb.close();
} catch (Exception e)  {  
    e.printStackTrace();  
}  

//-----------------下载
filePath= new String( filePath.getBytes("iso-8859-1"), "UTF-8");
filetemp = new File(filePath);
fileContent = FileUtil.getBytes(filetemp);
fileName += ".xls";

response.setHeader("Content-Disposition","attachment; filename=" + new String(fileName.getBytes("utf-8"), "iso-8859-1"));
response.getOutputStream().write(fileContent,0,fileContent.length);
response.getOutputStream().flush();
response.getOutputStream().close();
out.clear();
out = pageContext.pushBody();

        	
时间: 2024-08-28 14:02:07

poI 以Excel导出数据的相关文章

Java通过POI技术操作Excel(3)----数据导出

在之前的博客中,总结了Excel模板生成和Excel数据录入,然后剩最后一个模块,数据库中数据读取,在之前的基础上我们来看这一模块,应该已经非常容易了,接下来简单的介绍一下: 这里我们仍然以jsp+servlet为例,对SqlServer2005数据库进行操作,如下都是基本步骤: 1.连接数据库:2.根据sql语句获取数据库中值:3.将值进行导出操作: 首先,我们来记性数据库的连接,这个相信接触过java的人都不会陌生,我就不赘述了 1 public class DataBase { 2 pri

Excel向数据库插入数据和数据库向Excel导出数据

为了熟悉java里工作簿的相关知识点,所以找了"Excel向数据库插入数据和数据库向Excel导出数据"的功能来实现. 注意事项:1,mysql数据库: 2,需要导入的jar包有 jxl.jar,mysql-connector-java-5.1.22-bin.jar,ojdbc6.jar 代码如下: 一, 建立数据库名称 javaforexcel,建立表stu DROP TABLE IF EXISTS `stu`;CREATE TABLE `stu` (  `id` int(11) N

使用poi读取Excel文件数据

除分数被转换为小数存储外,其他数据经本人测试无问题,如发现问题请留言,方便及时更新 package com.haiyisoft.iecp.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.text.DateFormat;

POI实现excel的数据验证

目录 前言 难点1:合并单元格 代码实现策略: step 1: 合并单元格 step 2: 给单元格赋值 难点2:数据验证-下拉框 代码实现策略: step 1:设置需要进行数据验证的单元格范围和可供选择的值 step 2:给当前sheet添加数据验证 难点3:数据验证-某列保证唯一性 代码实现策略: step 1:设置需要进行数据验证的单元格范围 step 2:给当前sheet添加数据验证 前言 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Mi

POI 实现Excel 导出案例分析

无论使用poi还是使用jxl导出excel都需要用到流一种是outputstrean,另一种fileoutputstream第一种: 如果想要弹出保存的提示框必须加入下列三句response.setContentType("application/vnd.ms-excel; charset=utf-8");response.setHeader("Content-Disposition","attachment;filename="+filenam

poi实现Excel导出

最近做了一个导出Excel的小功能,以前没接触过,现在分享下自己的代码,想让各位帮忙看看有啥地方可以优化,也方便自己以后查阅... 首先是excelAction的代码: 1 /** 2 * excelAction 3 * @author zhaoxz 4 * 5 */ 6 @Controller("excelAction") 7 @Scope("prototype") 8 public class ExcelAction extends BaseAction { 9

工作记录:使用POI从excel导入数据(2003版本、2007以及以上版本)

使用poi读取2007版本及以上的数据实例: public List<KqRecord> readXlsx(String path) throws IOException {         InputStream is = new FileInputStream(path);         XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);//2007以上版本         KqRecord kq = null;         List&

selenium+testng+java+poi进行excel的数据参数化

一,首先要配置好环境selenium+testng和poi包,selenium+testng的环境搭建就不细说了,这里有poi的包的分享https://pan.baidu.com/s/1BJEIWR57_4vwrCDy6WuBWA 下载后在项目里面添加lib文件再把所需要的poi包放入其中,并在项目里面导入其java build path中. 二,新建立一个Excel数据表. 三,代码如下: import org.testng.annotations.Test;import org.testng

thinkphp5中使用excel导出数据表格(包涵图片)

首先使用composer require phpoffice/phpexcel下载安装phpexcel包. 将包放入extend下面. 不附加图片的导出 /** * 导出excel(不带图片) * @param string $fileName [description] * @param [type] $headArr [description] * @param [type] $data [description] * @return [type] [description] */ publ