本文简单写记录java操作excel表格并通过浏览器下载,前端代码没有写。
开发环境
工具环境:eclipse
项目环境:springboot
步骤
1.创建人员entity,包含姓名,年龄,性别
Person.java
public class Person{
private String name;
private String age;
private String sex;
public Person( String name, String age, String sex ){
this.name = name;
this.age = age;
this.sex = sex;
}
public void setName( String name ){
this.name = name;
}
public String getName{
return name;
}
public void setAge( String age ){
this.age = age;
}
public String getAge(){
return age;
}
public void setSex( String sex){
this.sex = sex;
}
public String getSex(){
return sex;
}
}
2.编写请求并下载类
DownLoadExcel.java
public class DownLoadExcel{
@RequestMapping("/a/download") //访问地址
public void download(HttpServletRequest request, HttpServletResponse response ) throws Exception{
List<Person> list = new ArrayList<Person>();
list.add(new Person("jimy","23","男"));
list.add(new Person("tom","24","女"));
Workbook workbook = new ExportExcelBuilder().createExcel2013()
.addStringColumn( "name" , "姓名" ,6000 )
.addStringColumn( "age" , "年龄" ,5000 )
.addStringColumn( "sex" , "性别" ,12000 )
.setSheetName("人员")
.setData(Person.class,list)
.build();
String titleName = "perosn_data.xlsx"; //保存的文件名称
// 解决中文乱码问题
String user_Agent = request.getHeader("User-Agent"); //获取头部的User-Agent信息
if(user_Agent.contains("Firefox")){ //火狐浏览器中文乱码
ExcelUtils.setDownloadForFirefox(workbook, response, titleName);
}else{// ie浏览器中文乱码
ExcelUtils.setDownload(workbook, response, titleName);
}
}
public static void setDownloadForFirefox(Workbook workbook, HttpServletResponse response, String fileName) throws IOException {
fileName=base64EncodeFileName(fileName);
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
response.setContentType("application/vnd.ms-excel");
try (OutputStream outputStream = response.getOutputStream()) {
save(workbook, outputStream);
}
}
}
注:使用POI需要导入
由于实际使用的代码比较多,没有贴出实际使用的代码。这里手动敲了个最简单的代码,代码并没有测试。对于POI操作word生成word文件,后面有时间会记录到博客。