`
everlxq
  • 浏览: 108738 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

导出文件

 
阅读更多

所需jar包:poi-3.8-20120326.jar
package excl;

import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.struts2.ServletActionContext;

public class TestExcl {
	
	public static void exportExcel() throws IOException{
	//声明一个工作簿
	HSSFWorkbook workbook= new HSSFWorkbook();
	//生成一个表格
	HSSFSheet sheet = workbook.createSheet("我的表格");
	//设置表格的默认宽度为20个字节
	sheet.setDefaultColumnWidth(20);
	
	//生成一个样式
	HSSFCellStyle style = workbook.createCellStyle();
	style.setFillForegroundColor(HSSFColor.GOLD.index);
	style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
	style.setBorderBottom(HSSFCellStyle.BORDER_THIN);  
    style.setBorderLeft(HSSFCellStyle.BORDER_THIN);  
    style.setBorderRight(HSSFCellStyle.BORDER_THIN);  
    style.setBorderTop(HSSFCellStyle.BORDER_THIN);  
    style.setAlignment(HSSFCellStyle.ALIGN_CENTER);  
    
    //生成一个字体
    HSSFFont font = workbook.createFont();
    font.setColor(HSSFColor.VIOLET.index);  
    //font.setFontHeightInPoints((short) 12);  
    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    
    //把字体应用到当前样式
    style.setFont(font);
    
    //指定当前单元格内容显示不下时自动换行
    style.setWrapText(true);
    
    /* 
    
    以下可以用于设置导出的数据的样式 
      
   // 生成并设置另一个样式 
   HSSFCellStyle style2 = workbook.createCellStyle(); 
   style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index); 
   style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); 
   style2.setBorderBottom(HSSFCellStyle.BORDER_THIN); 
   style2.setBorderLeft(HSSFCellStyle.BORDER_THIN); 
   style2.setBorderRight(HSSFCellStyle.BORDER_THIN); 
   style2.setBorderTop(HSSFCellStyle.BORDER_THIN); 
   style2.setAlignment(HSSFCellStyle.ALIGN_CENTER); 
   style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); 
   // 生成另一个字体 
   HSSFFont font2 = workbook.createFont(); 
   font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); 
   // 把字体应用到当前的样式 
   style2.setFont(font2); 
   // 声明一个画图的顶级管理器 
   HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); 
    
    
   // 定义注释的大小和位置,详见文档 
   HSSFComment comment = patriarch.createComment(new HSSFClientAnchor(0, 0, 0, 0, (short) 4, 2, (short) 6, 5)); 
   // 设置注释内容 
   comment.setString(new HSSFRichTextString("可以在POI中添加注释!")); 
   // 设置注释作者,当鼠标移动到单元格上是可以在状态栏中看到该内容. 
   comment.setAuthor("leno");
   
   */  
     
     //设置标题行
    HSSFRow row = sheet.createRow(0);
    List<String> list = new ArrayList<String>();
    list.add("姓名");
    list.add("性别");
    list.add("年龄");
    list.add("身高");
    for(int i=0;i<list.size();i++){
    	HSSFCell cell=row.createCell(i);
    	cell.setCellStyle(style);
    	HSSFRichTextString text = new HSSFRichTextString(list.get(i));
    	cell.setCellValue(text);
    }
    //遍历集合数据,产生数据行
    List<LinkedHashMap<String,Object>> lists = 
    	new ArrayList<LinkedHashMap<String,Object>>();
    LinkedHashMap<String,Object> l=new LinkedHashMap<String,Object>();
    l.put("xm", "zhangsan");
    l.put("xb", "nv");
    l.put("nl", "25");
    l.put("sg", "165");
    lists.add(l);
    
    String[] columns = {"xm","xb","nl","sg"};
    int index=1;
    for(LinkedHashMap<String,Object> link:lists){
    	row = sheet.createRow(index);
    	int cellIndex=0;
    	for(String s:columns){
    		HSSFCell cell = row.createCell(cellIndex);
    		HSSFRichTextString text = 
    			new HSSFRichTextString(link.get(s)==null?"":link.get(s).toString());
    		cell.setCellValue(text);
    		cellIndex++;
    	}
    	index++;
    }
    HttpServletResponse response = ServletActionContext.getResponse();
    OutputStream out = response.getOutputStream();
    workbook.write(out);
	}
	
	
	public String onHead(){  
        try {  
            HttpServletResponse response = ServletActionContext.getResponse();  
            response.setContentType("octets/stream");  
            response.addHeader("Content-Disposition","attachment;filename=test.xls");  
            OutputStream out = response.getOutputStream();  
            exportExcel();  
            out.close();  
        } catch (Exception e) {  
        }  
        return null;  
    }  
	
}



response的用法:

HttpServletResponse response = ServletActionContext.getResponse(); 
            response.setContentType("octets/stream"); 
            response.addHeader("Content-Disposition","attachment;filename=test.xls"); 
            OutputStream out = response.getOutputStream(); 
            exportExcel(); 
            out.close(); 
分享到:
评论

相关推荐

    Oracle 导入错误IMP-00010:不是有效的导出文件,头部验证失败

    在Oracle数据库管理中,"IMP-00010:不是有效的导出文件,头部验证失败" 是一个常见的导入错误,通常发生在尝试使用`expdp`(数据泵导出)或`impdp`(数据泵导入)工具进行数据迁移或备份恢复时。这个错误意味着系统...

    IMP-00010:不是有效的导出文件,头部验证失败

    标题“IMP-00010:不是有效的导出文件,头部验证失败”涉及的是Oracle数据库导入(IMP)过程中遇到的一个常见错误。这个错误通常发生在尝试使用IMP工具从.dmp文件导入数据时,表明导入文件可能已损坏或不完整,导致...

    IMP-00009:异常结束导出文件解决方案.docx

    ### IMP-00009:异常结束导出文件解决方案 #### 一、问题背景与概述 在Oracle数据库管理过程中,经常会遇到数据迁移的需求,其中一个常见的操作就是使用`exp`命令将表数据导出为一个文件,再使用`imp`命令将这个...

    Jmeter导出文件.jmx

    Jmeter导出文件.jmx

    解决ecside导出文件乱码问题

    在解决ecside导出文件乱码问题时,我们需要进行以下步骤: 1. **将字体文件添加到工程**:首先,你需要将simsun.ttc和simhei.ttf字体文件复制到你的Java工程的lib目录下。这样做的目的是为了让运行时环境能够找到并...

    idea导出文件支持目录结构jar包

    idea导出文件类似eclipse目录结构,将jar包放在idea目录的plugins下,重启idea右键Export Files。

    导入导出文件

    在IT领域,导入导出文件是一项基础且至关重要的操作,广泛应用于数据迁移、备份、分析以及不同系统间的数据交换。这个话题看似简单,但其实包含了丰富的技术细节和应用场景。这里,我们将深入探讨“导入导出文件”的...

    C#导出文件到DBF

    总结,"C#导出文件到DBF"涉及的主要知识点包括C#编程、数据模型设计、文件I/O操作、自定义DBF文件写入逻辑以及可能的第三方库的使用。通过学习这个示例,开发者可以掌握将C#数据结构转换为DBF文件格式的关键技能,...

    进度条显示导出文件进度

    标题"进度条显示导出文件进度"所涉及的知识点主要集中在如何在文件导出过程中实时更新进度条的状态,确保用户能够了解导出的进度。 首先,我们要理解进度条(ProgressBar)组件。在Windows Forms或WPF等桌面应用...

    java导出文件到 pdf,excel,word

    在Java编程环境中,导出数据到PDF、Excel和Word格式是一项常见的需求,这通常涉及到文件处理和格式转换。...对于压缩包子文件“导出文件”,可能包含了示例代码或导出的样本文件,可以进一步研究和学习。

    spine3.0导出文件转换成cocos3.8可使用文件工具

    使用该工具之前,确保你已经拥有Spine3.0导出的JSON或ATLAS文件,这些都是Spine的标准导出格式,包含了骨骼、动画以及纹理信息。运行“spine3to2.exe”,将这些文件作为输入,工具会自动生成兼容Cocos3.8的Spine2.0...

    根据路径,批量导出文件

    标题“根据路径,批量导出文件”所指的是一款基于Java编程语言开发的软件工具,其主要功能是帮助用户批量地从指定的文件路径中复制并导出文件。这款工具通常具备图形用户界面(GUI),使得操作更加直观、便捷,适合...

    IDEA按项目结构导出文件

    IDEA开发工具推荐,非全量部署导出更方便!

    WinMerge软件配置导出文件.ini

    自己使用的WimMerge软件配置文件,方便以后一键导入使用; 主要设置了字体、对比差异的颜色调整;

    Delphi导出文件

    DBGridExport.pas导出文件

    easyExcel导出文件的模版

    easyExcel导出文件的模版

    fbx批量导出文件

    本教程将详细介绍如何使用“fbx批量导出文件”工具来提高3ds Max中的工作效率。 首先,批量导出功能解决了传统逐个导出3D模型的繁琐过程。在处理大型项目或多个模型时,手动操作不仅耗时,也容易出错。批量导出工具...

    spine骨骼动画原文件及导出文件

    PIXI.js支持的骨骼动画资源,包含13个spine资源库,每个资源由***.spine,export文件夹(.json,.atlas,.png),images文件夹(ps切图)等。 export文件夹可供pixi-spine直接使用

    SourceTree自定义操作插件-导出Git仓库选中文件

    -dir &lt;导出文件的输出目录&gt; 导出Git仓库中被选中的文件的输出目录 -files &lt;file file file ...&gt; Git仓库中选中的文件 -h,--help 输出产品版的帮助信息 -repo 仓库的路径&gt; Git仓库的路径 -v,--version 输出产品...

Global site tag (gtag.js) - Google Analytics