<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.16</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.16</version>
</dependency>
/**
*
* @param stuList 從數據庫中查詢須要導入excel文件的信息列表
* @return 返回生成的excel文件的路徑
* @throws Exception
*/
public static String stuList2Excel(List<Student> stuList) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd hhmmss");
Workbook wb = new XSSFWorkbook();
//標題行抽出字段
String[] title = {"序號","學號", "姓名", "性別", "入學時間", "住址", "手機號", "其餘信息"};
//設置sheet名稱,並建立新的sheet對象
String sheetName = "學生信息一覽";
Sheet stuSheet = wb.createSheet(sheetName);
//獲取表頭行
Row titleRow = stuSheet.createRow(0);
//建立單元格,設置style居中,字體,單元格大小等
CellStyle style = wb.createCellStyle();
Cell cell = null;
//把已經寫好的標題行寫入excel文件中
for (int i = 0; i < title.length; i++) {
cell = titleRow.createCell(i);
cell.setCellValue(title[i]);
cell.setCellStyle(style);
}
//把從數據庫中取得的數據一一寫入excel文件中
Row row = null;
for (int i = 0; i < stuList.size(); i++) {
//建立list.size()行數據
row = stuSheet.createRow(i + 1);
//把值一一寫進單元格里
//設置第一列爲自動遞增的序號
row.createCell(0).setCellValue(i + 1);
row.createCell(1).setCellValue(stuList.get(i).getStuId());
row.createCell(2).setCellValue(stuList.get(i).getStuName());
row.createCell(3).setCellValue(stuList.get(i).getGender());
//把時間轉換爲指定格式的字符串再寫入excel文件中
if (stuList.get(i).getEnterTime() != null) {
row.createCell(4).setCellValue(sdf.format(stuList.get(i).getEnterTime()));
}
row.createCell(5).setCellValue(stuList.get(i).getAddress());
row.createCell(6).setCellValue(stuList.get(i).getPhone());
row.createCell(7).setCellValue(stuList.get(i).getOtherInfo());
}
//設置單元格寬度自適應,在此基礎上把寬度調至1.5倍
for (int i = 0; i < title.length; i++) {
stuSheet.autoSizeColumn(i, true);
stuSheet.setColumnWidth(i, stuSheet.getColumnWidth(i) * 15 / 10);
}
//獲取配置文件中保存對應excel文件的路徑,本地也能夠直接寫成F:excel/stuInfoExcel路徑
String folderPath = ResourceBundle.getBundle("systemconfig").getString("downloadFolder") + File.separator + "stuInfoExcel";
//建立上傳文件目錄
File folder = new File(folderPath);
//若是文件夾不存在建立對應的文件夾
if (!folder.exists()) {
folder.mkdirs();
}
//設置文件名
String fileName = sdf1.format(new Date()) + sheetName + ".xlsx";
String savePath = folderPath + File.separator + fileName;
// System.out.println(savePath);
OutputStream fileOut = new FileOutputStream(savePath);
wb.write(fileOut);
fileOut.close();
//返回文件保存全路徑
return savePath;
}
注意事項:前端
根據返回的路徑名手動找到的文件:java
獲得的excel數據以下數據庫
以上就是從數據庫中讀取數據寫入excel文件並保存到指定位置,後續還有前端請求下載excel文件,後端的處理方法;前端上傳excel文件,讀取其中的文件信息,並把對應的數據取出存入到數據庫中......apache
未完待續。。。。。。後端