Java 利用poi生成excel表格

摘要:
对于所需的jar包,编写一个excel工具类ExcelUtils.javaimportjava.lang.reflect.Field,如下所示:;importjava.util.Iterator;importjava.util.List;importorg.apache.poi.hssf.usermodel.HSSFCell;导入组织、路径、位置、用户模型、HSSFCe

所需jar包,如下所示

 Java 利用poi生成excel表格第1张

写一个excel工具类 ExcelUtils .java

import java.lang.reflect.Field;
import java.util.Iterator;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class ExcelUtils {
	/**
	 * 导出excel
	 * @param headerName (excel列名称)
	 * @param headerKey (导出对象属性名)
	 * @param sheetName (excel 页签名称)
	 * @param dataList (导出的数据)
	 * @return
	 */
	public static HSSFWorkbook createExcel(String[] headerName, String[] headerKey, String sheetName, List dataList) {
		try {
			if (headerKey.length <= 0) {
				return null;
			}
			if (dataList.size() <= 0) {
				return null;
			}
			HSSFWorkbook wb = new HSSFWorkbook();
			HSSFSheet sheet;
			if ((sheetName == null) || (sheetName.equals("")))
				sheet = wb.createSheet("Sheet1");
			else {
				sheet = wb.createSheet(sheetName);
			}
			HSSFRow row = sheet.createRow(0);
			HSSFCellStyle style = wb.createCellStyle();
			style.setAlignment((short)2);
			HSSFCell cell = null;
			if (headerName.length > 0) {
				for (int i = 0; i < headerName.length; i++) {
					cell = row.createCell(i);
					cell.setCellValue(headerName[i]);
					cell.setCellStyle(style);
					
				}
			}
			int n = 0;
			HSSFCellStyle contextstyle = wb.createCellStyle();
			contextstyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0.00_);(#,##0.00)"));

			HSSFCellStyle contextstyle1 = wb.createCellStyle();
			HSSFDataFormat format = wb.createDataFormat();
			contextstyle1.setDataFormat(format.getFormat("@"));

			HSSFCell cell0 = null;
			HSSFCell cell1 = null;

			for (Iterator localIterator = dataList.iterator(); localIterator.hasNext();) {
				Object obj = localIterator.next();
				Field[] fields = obj.getClass().getDeclaredFields();
				row = sheet.createRow(n + 1);
				for (int j = 0; j < headerKey.length; j++) {
					if (headerName.length <= 0) {
						cell0 = row.createCell(j);
						cell0.setCellValue(headerKey[j]);
						cell0.setCellStyle(style);
						
					}
					for (int i = 0; i < fields.length; i++) {
						if (fields[i].getName().equals(headerKey[j])) {
							fields[i].setAccessible(true);
							if (fields[i].get(obj) == null) {
								row.createCell(j).setCellValue("");
								break;
							}
							if ((fields[i].get(obj) instanceof Number)) {
								cell1 = row.createCell(j);
								cell1.setCellType(0);
								cell1.setCellStyle(contextstyle);
								cell1.setCellValue(Double.parseDouble(fields[i].get(obj).toString()));
								break;
							}
							if ("".equals(fields[i].get(obj))) {
								cell1 = row.createCell(j);
								cell1.setCellStyle(contextstyle1);
								row.createCell(j).setCellValue("");
								cell1.setCellType(1);
								break;
							}
							row.createCell(j).setCellValue(fields[i].get(obj).toString());
							break;
						}

					}
				}
				n++;
			}
			for (int i = 0; i < headerKey.length; i++) {
				sheet.setColumnWidth(i, headerKey[i].getBytes().length*2*256);
			}
			HSSFWorkbook localHSSFWorkbook1 = wb;
			return localHSSFWorkbook1;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		} finally {
		}
	}
}

  

添加一个vo,studentVo.java

public class StudentVo {
	private int id;
	
	private String sex;
	
	private String name;
	
	private String grade;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getGrade() {
		return grade;
	}

	public void setGrade(String grade) {
		this.grade = grade;
	}
}

在controller类中添加导出excel接口,如下所示

/**
	 * 国网数据导出
	 * @param request
	 * @param response
	 */
	@RequestMapping("/exportGWDataManageList")
	public void exportGWDataManageList(HttpServletRequest request, HttpServletResponse response){
		try{
			List<StudentVo> voList = new ArrayList<StudentVo>();
			StudentVo vo = new StudentVo();
			vo.setId("1");
			vo.setSex("男");
			vo.setName("张三");
			vo.setGrade("二年级");
			voList.add(vo);
			
			vo = new StudentVo();
			vo.setId("2");
			vo.setSex("女");
			vo.setName("李四");
			vo.setGrade("一年级");
			voList.add(vo);
			
			vo = new StudentVo();
			vo.setId("3");
			vo.setSex("男");
			vo.setName("王五");
			vo.setGrade("三年级");
			voList.add(vo);
			
			String[] headerName = { "序号","性别", "姓名", "年级"};
			String[] headerKey = { "id","sex", "name", "grade"};
			HSSFWorkbook wb = ExcelUtils.createExcel(headerName, headerKey, "年数据管理", voList);
			if (wb == null) {
				return;
			}
			response.setContentType("application/vnd.ms-excel");
			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
			Date date = new Date();
			String str = sdf.format(date);
			String fileName = "学生信息管理" + str;
			response.setHeader("Content-disposition",
					"attachment;filename=" + new String(fileName.getBytes("gb2312"), "ISO-8859-1") + ".xls");
			OutputStream ouputStream = response.getOutputStream();
			ouputStream.flush();
			wb.write(ouputStream);
			ouputStream.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

  

 页面只有一个生成excel按钮,如下所示

Java 利用poi生成excel表格第2张

点击按钮生成excel,内容如下所示

Java 利用poi生成excel表格第3张

免责声明:文章转载自《Java 利用poi生成excel表格》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MFC上下浮动与渐入渐出消息提示框实现mysql备份相关下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

poi操作word文档文件操作

import org.apache.poi.POITextExtractor; import org.apache.poi.hwpf.extractor.WordExtractor; //得到.doc文件提取器 org.apache.poi.hwpf.extractor.WordExtractor doc = new WordExtractor(ne...

Springboot分布式,excel导出,运用POI导出,前端用的jsp

1.pom.xml 添加POI架包org.apache.poipoi-ooxml3.15org.apache.poipoi3.15 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-...

使用POI导出excel基础篇

最近搞了下POI导出Excel,听说很多次,却是第一次搞。 在pom.xml中引入依赖 <dependency>   <groupId>org.apache.poi</groupId>   <artifactId>poi</artifactId>   <version>3.10-FI...

android使用POI读写word doc文件

目录 1 读word doc文件 1.1 通过WordExtractor读文件 1.2 通过HWPFDocument读文件 2 写word doc文件 Apache poi的hwpf模块是专门用来对word doc文件进行读写操作的。在hwpf里面我们使用HWPFDocument来表示一个word doc文档。在HWPFDocument里面有这么几个概念:...

poi提取docx中的文字和图片

package com.fry.poiDemo.dao; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; import...

CVE20211732 LPE漏洞分析

概述   CVE-2021-1732是一个发生在windows内核win32kfull模块的LPE漏洞,并且由于创建窗口时调用win32kfull!xxxCreateWindowEx过程中会进行用户模式回调(KeUserModeCallback),从而给了用户态进程利用的机会。   该漏洞由安恒信息在2020年12月在野外攻击样本中发现,在2021年2月份...