springboot从数据库导出excel
一、导入依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
二、html代码
<table border="0" style="margin-top:4px; margin-left: 18px"> <tr> <td><a href="#" class="easyui-linkbutton" onclick="downloadfile();">数据导出</a></td> </tr> </table>
三、js代码
<script> function downloadfile(){ window.location.href="/UserExcelDownloads"; } </script>
四、Controller代码
@RequestMapping(value = "UserExcelDownloads", method = RequestMethod.GET) public void downloadAllClassmate(HttpServletResponse response) throws IOException { HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("信息表"); List<UserTable> classmateList = service.all(); String fileName = "用户表" + ".xls";//设置要导出的文件的名字 //新增数据行,并且设置单元格数据 int rowNum = 1; String[] headers = { "id", "姓名", "密码", "身份证","手机","邮箱","性别","爱好","注册时间"}; //headers表示excel表中第一行的表头 HSSFRow row = sheet.createRow(0); //在excel表中添加表头 for(int i=0;i<headers.length;i++){ HSSFCell cell = row.createCell(i); HSSFRichTextString text = new HSSFRichTextString(headers[i]); cell.setCellValue(text); } //在表中存放查询到的数据放入对应的列 for (UserTable user : classmateList) { HSSFRow row1 = sheet.createRow(rowNum); row1.createCell(0).setCellValue(user.getId()); row1.createCell(1).setCellValue(user.getName()); row1.createCell(2).setCellValue(user.getPwd()); row1.createCell(3).setCellValue(user.getIdcard()); row1.createCell(4).setCellValue(user.getPhone()); row1.createCell(5).setCellValue(user.getEmail()); row1.createCell(6).setCellValue(user.getSex()); row1.createCell(7).setCellValue(user.getHobby()); Date date=user.getTime(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time=sdf.format(date); row1.createCell(8).setCellValue(time); rowNum++; } response.setContentType("application/octet-stream"); response.setHeader("Content-disposition", "attachment;filename=" + fileName); response.flushBuffer(); workbook.write(response.getOutputStream()); }
五、service代码
public List<UserTable> all(){ return mapper.selectByExample(null); }
六、User实体类
package com.text.pojo; import java.util.Date; public class UserTable { private Integer id; private String name; private String pwd; private String idcard; private String phone; private String email; private String sex; private String hobby; private Date time; private String timeS; public String getTimeS() { return timeS; } public void setTimeS(String timeS) { this.timeS = timeS; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name == null ? null : name.trim(); } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd == null ? null : pwd.trim(); } public String getIdcard() { return idcard; } public void setIdcard(String idcard) { this.idcard = idcard == null ? null : idcard.trim(); } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone == null ? null : phone.trim(); } public String getEmail() { return email; } public void setEmail(String email) { this.email = email == null ? null : email.trim(); } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex == null ? null : sex.trim(); } public String getHobby() { return hobby; } public void setHobby(String hobby) { this.hobby = hobby == null ? null : hobby.trim(); } public Date getTime() { return time; } public void setTime(Date time) { this.time = time; } }
package com.text.controller;
import com.text.service.ImportService;
import com.text.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.InputStream;
import java.util.List;
@Controller
public class ImportController {
@Autowired
private ImportService importService;
@Autowired
UserService service;
@RequestMapping("/upload")
public String uploadExcel( Model model, MultipartFile file) throws Exception {
String filePath="C:\\Users\\Administrator\\Desktop";
//获得原始图片的拓展名
String originalFileName=file.getOriginalFilename();
//封装上传文件位置的全路径
File targetFile=new File(filePath,originalFileName);
InputStream inputStream = file.getInputStream();
List<List<Object>> list = importService.getBankListByExcel(inputStream, originalFileName);
inputStream.close();
for (int i = 0; i < list.size(); i++) {
List<Object> lo = list.get(i);
for(int j=0;j<lo.size();j++){
Object o = lo.get(j);
}
}
return "main";
}
}
package com.text.service;
import com.microsoft.schemas.office.visio.x2012.main.CellType;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Service;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
/**
* @author: curry
* @Date: 2018/8/16
*/
@Service
public class ImportService {
/**
* 处理上传的文件
*
* @param in
* @param fileName
* @return
* @throws Exception
*/
public List getBankListByExcel(InputStream in, String fileName) throws Exception {
List list = new ArrayList<>();
//创建Excel工作薄
Workbook work = this.getWorkbook(in, fileName);
if (null == work) {
throw new Exception("创建Excel工作薄为空!");
}
Sheet sheet = null;
Row row = null;
Cell cell = null;
for (int i = 0; i < work.getNumberOfSheets(); i++) {
sheet = work.getSheetAt(i);
if (sheet == null) {
continue;
}
for (int j = sheet.getFirstRowNum(); j <= sheet.getLastRowNum(); j++) {
row = sheet.getRow(j);
if (row == null || row.getFirstCellNum() == j) {
continue;
}
List<Object> li = new ArrayList<>();
for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) {
cell = row.getCell(y);
li.add(cell);
}
list.add(li);
}
}
work.close();
return list;
}
/**
* 判断文件格式
*
* @param inStr
* @param fileName
* @return
* @throws Exception
*/
public Workbook getWorkbook(InputStream inStr, String fileName) throws Exception {
Workbook workbook = null;
String fileType = fileName.substring(fileName.lastIndexOf("."));
if (".xls".equals(fileType)) {
workbook = new HSSFWorkbook(inStr);
} else if (".xlsx".equals(fileType)) {
workbook = new XSSFWorkbook(inStr);
} else {
throw new Exception("请上传excel文件!");
}
return workbook;
}
}
浙公网安备 33010602011771号