最近公司做人事管理系统,要导出管理人员的的Excel表格,所以就研究一番,写了一个演示
废话不多说,上代码
//导出的地址
File path=new File("D:/test_excel.xlsx");
//创建excel对象
HSSFWorkbook wb=new HSSFWorkbook();
//创建sheet对象
HSSFSheet sheet=wb.createSheet("这是excel测试");
//excel的第一行名称
String [] str={"id","name","age"};
//创建行对象
HSSFRow row=sheet.createRow(0);
//创建行里的单元格格式对象
HSSFCellStyle style = wb.createCellStyle();
//设置单元格居中
style.setAlignment(HorizontalAlignment.CENTER);
//创建单元格对象
HSSFCell cell=null;
//为单元格赋值
for (int i=0;i<str.length;i++){
cell = row.createCell(i);
cell.setCellValue(str[i]);
//单元格居中
cell.setCellStyle(style);
}
for (int i = 1; i <=10 ; i++) {
//创建行
row=sheet.createRow(i);
//在行里放单元格
for (int j = 0; j <3 ; j++) {
//每一行的第一个单元格
cell=row.createCell(0);
cell.setCellValue(i+"id");
//每一行的第二个单元格
cell=row.createCell(1);
cell.setCellValue("我是NAME");
//每一行的第三个单元格
cell=row.createCell(2);
cell.setCellValue("年龄");
}
}
//输出excel表格,到指定路径
try {
wb.write(path);
wb.close();
}catch(Exception e){
e.printStackTrace();
}
这只是一个例子,如果要实现从网上下载到本地,还需要改造一番
在附上一个网络下载时,需要设置的响应头等
public void toExcel(HSSFWorkbook hfb, HttpServletResponse response, String excelName) {
try {
ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
hfb.write(byteArray);
hfb.close();
String fileName = URLEncoder.encode(excelName + ".xlsx", "UTF-8");
response.reset();
response.setHeader("Content-Disposition", "attachment;filename*=utf-8'zh_cn'" + fileName);
response.addHeader("Content-Length", "" + byteArray.size());
response.setContentType("application/msexcel;charset=utf-8");
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(byteArray.toByteArray());
outputStream.flush();
outputStream.close();
byteArray.close();
} catch (IOException e) {
e.printStackTrace();
}
}
好了,完事