Java Web利用POI导出Excel简单例子

转载 2013年04月02日 14:28:19
采用Spring mvc架构: 

Controller层代码如下 

@Controller  
public class StudentExportController{  
  
    @Autowired  
    private StudentExportService studentExportService;  
  
    @RequestMapping(value = "/excel/export")  
    public void exportExcel(HttpServletRequest request, HttpServletResponse response)   
    throws Exception {  
          
        List<Student> list = new ArrayList<Student>();  
        list.add(new Student(1000,"zhangsan","20"));  
        list.add(new Student(1001,"lisi","23"));  
        list.add(new Student(1002,"wangwu","25"));  
        HSSFWorkbook wb = studentExportService.export(list);  
        response.setContentType("application/vnd.ms-excel");  
        response.setHeader("Content-disposition", "attachment;filename=student.xls");  
        OutputStream ouputStream = response.getOutputStream();  
        wb.write(ouputStream);  
        ouputStream.flush();  
        ouputStream.close();  
   }  
}  

Service层代码如下: 

@Service  
public class StudentExportService {  
  
    String[] excelHeader = { "Sno", "Name", "Age"};  
    public HSSFWorkbook export(List<Campaign> list) {  
        HSSFWorkbook wb = new HSSFWorkbook();  
        HSSFSheet sheet = wb.createSheet("Campaign");  
        HSSFRow row = sheet.createRow((int) 0);  
        HSSFCellStyle style = wb.createCellStyle();  
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);  
  
        for (int i = 0; i < excelHeader.length; i++) {  
            HSSFCell cell = row.createCell(i);  
            cell.setCellValue(excelHeader[i]);  
            cell.setCellStyle(style);  
            sheet.autoSizeColumn(i);  
        }  
  
        for (int i = 0; i < list.size(); i++) {  
            row = sheet.createRow(i + 1);  
            Student student = list.get(i);  
            row.createCell(0).setCellValue(student.getSno());  
            row.createCell(1).setCellValue(student.getName());  
            row.createCell(2).setCellValue(student.getAge());  
        }  
        return wb;  
    }  
}  

前台的js代码如下: 

<script>  
function exportExcel(){  
     location.href="excel/export";  
     <!--这里不能用ajax请求,ajax请求无法弹出下载保存对话框-->  
 }  
</script>  

 

 

设置Excel样式以及注意点:

	String[] excelHeader = { "所属区域(地市)", "机房", "机架资源情况", "", "", "", "",
		"", "端口资源情况", "", "", "", "", "", "机位资源情况", "", "", "设备资源情况",
		"", "", "IP资源情况", "", "", "", "", "网络设备数" };
	String[] excelHeader1 = { "", "", "总量(个)", "空闲(个)", "预占(个)", "实占(个)",
		"自用(个)", "其它(个)", "总量(个) ", "在用(个)", "空闲(个)", "总带宽(M)",
		"在用带宽(M)", "空闲带宽(M)", "总量(个)", "在用(个)", "空闲(个)", "设备总量(个)",
		"客户设备(个)", "电信设备(个)", "总量(个)", "空闲(个)", "预占用(个)", "实占用(个)",
		"自用(个)", "" };
	// 单元格列宽
	int[] excelHeaderWidth = { 150, 120, 100, 100, 100, 100, 100, 100, 100,
		100, 100, 120, 120, 120, 120, 120, 120, 150, 150, 150, 120,
		120, 150, 150, 120, 150 };

	HSSFWorkbook wb = new HSSFWorkbook();
	HSSFSheet sheet = wb.createSheet("机房报表统计");
	HSSFRow row = sheet.createRow((int) 0);
	HSSFCellStyle style = wb.createCellStyle();
	// 设置居中样式
	style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中
	style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 垂直居中

	// 设置合计样式
	HSSFCellStyle style1 = wb.createCellStyle();
	Font font = wb.createFont();
	font.setColor(HSSFColor.RED.index);
	font.setBoldweight(Font.BOLDWEIGHT_BOLD); // 粗体
	style1.setFont(font);
	style1.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中
	style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 垂直居中

	// 合并单元格
	// first row (0-based) last row (0-based) first column (0-based) last
	// column (0-based)
	sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0));
	sheet.addMergedRegion(new CellRangeAddress(0, 1, 1, 1));
	sheet.addMergedRegion(new CellRangeAddress(0, 0, 2, 7));
	sheet.addMergedRegion(new CellRangeAddress(0, 0, 8, 13));
	sheet.addMergedRegion(new CellRangeAddress(0, 0, 14, 16));
	sheet.addMergedRegion(new CellRangeAddress(0, 0, 17, 19));
	sheet.addMergedRegion(new CellRangeAddress(0, 0, 20, 24));
	sheet.addMergedRegion(new CellRangeAddress(0, 1, 25, 25));
	// 设置列宽度(像素)
	for (int i = 0; i < excelHeaderWidth.length; i++) {
	    sheet.setColumnWidth(i, 32 * excelHeaderWidth[i]);
	}

	// 添加表格头
	for (int i = 0; i < excelHeader.length; i++) {
	    HSSFCell cell = row.createCell(i);
	    cell.setCellValue(excelHeader[i]);
	    cell.setCellStyle(style);
	}
	row = sheet.createRow((int) 1);
	for (int i = 0; i < excelHeader1.length; i++) {
	    HSSFCell cell = row.createCell(i);
	    cell.setCellValue(excelHeader1[i]);
	    cell.setCellStyle(style);
	}

 

 


注意点1:合并单元格    new CellRangeAddress(int,int,int,int)

first row (0-based) ,last row (0-based), first column (0-based),last column (0-based)

 

注意点2:合并单元格

String[] excelHeader = { "所属区域(地市)", "机房", "机架资源情况", "", "", "", "","", "端口资源情况", "", "", "", "", "", "机位资源情况", "", "", "设备资源情况","", "", "IP资源情况", "", "", "", "", "网络设备数" };

合并以后的单元格虽然是一个,但是仍然要保留其单元格内容,此处用空字符串代替,否则后续表头显示不出

 

注意点3:填充单元格

正确写法:

HSSFCell cell = row.createCell(i);

cell.setCellValue(excelHeader1[i]);

cell.setCellStyle(style);

错误写法:

row.createCell(i).setCellValue(excelHeader1[i]);

row.createCell(i).setCellStyle(style);

本人为了省一个HSSFCell对象,使用了错误写法,导致HSSFCell对象创建了2次,最后只保留了样式,而内容无法显示

java web Excel导入、导出的实现

在做web开发时,我们经常会用到数据表格的导入导出功能,这样可以帮我们节省人工操作的时间,极大提高办事效率,下面,直入正题: 笔者所做的导入导出是针对java springMVC框架、工作簿poi以...
  • qiyongkang520
  • qiyongkang520
  • 2015年11月02日 21:54
  • 8557

Java web项目利用POI导出excel

今天做项目需要导出excel文件,采用POI生成excel结构。方式如下:(解决了中文名称下载问题) 方式一: import java.io.ByteArrayOutputStream; impor...
  • littlebirdofjava
  • littlebirdofjava
  • 2015年03月30日 16:29
  • 12058

网页将数据导出到Excel【JavaWeb技术】

很多时候,我们需要让用户在网页填写信息,然后导出到Excel。 我们需要在项目中创建一个表单页面export.html。代码如下: 导出页面 ...
  • L_BestCoder
  • L_BestCoder
  • 2017年02月13日 12:44
  • 1955

Java Web利用poi导出Excel2003、2007完整解决方案

1997-2003版行列数量限制:行-65535,列-256 2007-2010版行列数量限制:行-1048576,列-16384根据自己的业务需求来选择版本,这里注意一下,03版本的后缀是.xls ...
  • rickiyeat
  • rickiyeat
  • 2017年03月15日 13:38
  • 4112

JavaWeb中导入导出Excel数据

1. 利用文件上传的技术,将需要导入的Excel表上传至服务器上。 2. 利用POI技术读取刚上传的文件,将数据封装至List集合。 3. 将List集合转为实体类,进行持久化操作。...
  • TMaskBoy
  • TMaskBoy
  • 2016年06月24日 19:42
  • 15205

【web开发】导出到Excel表格

本文所需开发文件及其例子下载地址:http://download.csdn.net/detail/tr1912/9597549         众所周知的是我们在日常的开发中少不了的是和数据...
  • tr1912
  • tr1912
  • 2016年08月07日 23:25
  • 1496

web项目导出excel表格

该功能涉及到两个知识点,一是制作excel相关插件的使用,二是导出文件,spring-mvc该如何配置 先说excel插件的使用,这次使用的是org.apache.poi包,版本是3.9,下面粘完整能...
  • yuan487639
  • yuan487639
  • 2017年07月27日 17:35
  • 336

web项目实现Excel数据导入导出

由于项目要求,需要实现一个数据库信息导出为Excel文件,并能将Excel文件中的信息导入数据库的功能,网上找了一下资料,发现大都只涉及到Excel文件的简单操作,所以特地在此分享了自己写的两个简单的...
  • xiaoshuifu
  • xiaoshuifu
  • 2016年06月19日 23:00
  • 10352

利用JQuery实现web页面中table导出excel的功能

实现办法下载jquery的excel导出插件点击打开链接,此插件需要base64编码,所以在引用的时候也需要在引用64位编码的js脚本,例如             使用方法: ...
  • huangyezi
  • huangyezi
  • 2015年06月08日 01:35
  • 32520

Web导出excel的几种方法

在项目中我们经常遇到需要将报表导出成excel下载保存下来,在不同的要求和不同的资源情况下我们有不同的处理方式。在这里我将谈谈我所遇到的几种情况和遇到的一些问题。  总的来说可以分为:服务器端生成和...
  • lxk2013
  • lxk2013
  • 2016年04月28日 10:14
  • 1489
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java Web利用POI导出Excel简单例子
举报原因:
原因补充:

(最多只允许输入30个字)