excel 批量数据导入数据库与数据库导出数据到excel
程序员文章站
2022-06-11 13:29:15
...
批量导入数据------spring Data JPA 整合 Hibernate
// 文件上传 ---- 批量导入-----------------------------------
private File file;
public void setFile(File file) {
this.file = file;
}
// 文件上传
@Action(value = "area_upload")
public String upload() throws IOException {
List<Area> list = new ArrayList<Area>();
// 判断文件类型
// 加载excel文件
HSSFWorkbook hssf = new HSSFWorkbook(new FileInputStream(file));
// 读取sheet并遍历
HSSFSheet sheetAt = hssf.getSheetAt(0);
for (Row row : sheetAt) {
// 跳过第一行与空行
if (row.getRowNum() == 0) {
continue;
}
if (row.getCell(0) == null || StringUtils.isBlank(row.getCell(0).getStringCellValue())) {
continue;
}
Area pace = new Area();
pace.setId(row.getCell(0).getStringCellValue());
pace.setProvince(row.getCell(1).getStringCellValue());
pace.setCity(row.getCell(2).getStringCellValue());
pace.setDistrict(row.getCell(3).getStringCellValue());
pace.setPostcode(row.getCell(4).getStringCellValue());
// 生成拼音简码
String province = pace.getProvince();
String city = pace.getCity();
String district = pace.getDistrict();
// 截取字符串,去掉省市区关键字
province = province.substring(0, province.length() - 1);
city = city.substring(0, city.length() - 1);
district = district.substring(0, district.length() - 1);
// 生成简码
String[] headArray = Pinyin4jUtils.getHeadByString(province + city + district);
StringBuffer sb = new StringBuffer();
for (String headStr : headArray) {
sb.append(headStr);
}
String shortcode = sb.toString();
pace.setShortcode(shortcode);
// 城市编码
String cityCode = Pinyin4jUtils.hanziToPinyin(city, "");
pace.setCitycode(cityCode);
list.add(pace);
}
// 调用业务层保存数据
areaService.upload(list);
return NONE;
}
批量导出数据
// 文件导出
@Action(value="export")
public String export() {
// 获取数据
List<Area> list = areaService.findAll();
// 创建表格数据
// 创建excel文件
HSSFWorkbook hssf = new HSSFWorkbook();
// 创建sheet
HSSFSheet sheet = hssf.createSheet("区域信息");
// 创建第一行
HSSFRow row1 = sheet.createRow(0);
// 设置格式
HSSFCellStyle firstStyle = hssf.createCellStyle();
// 设置居中格式
firstStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 设置表头
// list可以作为参数
List<String> arr = new ArrayList<String>();
arr.add("编码");
arr.add("省市");
arr.add("城市");
arr.add("区域");
arr.add("邮编");
arr.add("城市编码");
arr.add("简码");
for (int i = 0; i < arr.size(); i++) {
HSSFCell createCell = row1.createCell(i);
createCell.setCellValue(arr.get(i));
createCell.setCellStyle(firstStyle);
}
// 遍历列表将数据存入文件
// 获取数据库信息
for (int i = 0; i < list.size(); i++) {
HSSFRow row2 = sheet.createRow(i + 1);
Area ar = list.get(i);
row2.createCell(0).setCellValue(ar.getId());
row2.createCell(1).setCellValue(ar.getProvince());
row2.createCell(2).setCellValue(ar.getCity());
row2.createCell(3).setCellValue(ar.getDistrict());
row2.createCell(4).setCellValue(ar.getPostcode());
row2.createCell(5).setCellValue(ar.getCitycode());
row2.createCell(6).setCellValue(ar.getShortcode());
}
try {
// 导出application/vnd.ms-excel;charset=utf-8
ServletOutputStream out = ServletActionContext.getResponse().getOutputStream();
ServletActionContext.getResponse().setContentType("application/vnd.ms-excel;charset=utf-8");
String filename = "区域信息.xls";
filename = new String(filename.getBytes(),"ISO-8859-1");
ServletActionContext.getResponse().setHeader("Content-Disposition","attachment;filename="+filename);
hssf.write(out);
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return NONE;
}
excel文件数据
编码 | 省市 | 城市 | 区域 | 邮编 | 城市编码 | 简码 |
QY044 | 天津市 | 天津市 | 河北区 | 120105 | tianjin | TJTJHB |
QY045 | 天津市 | 天津市 | 红桥区 | 120106 | tianjin | TJTJHQ |
QY046 | 天津市 | 天津市 | 滨海新区 | 120116 | tianjin | TJTJBHX |
QY047 | 天津市 | 天津市 | 东丽区 | 120110 | tianjin | TJTJDL |
QY048 | 天津市 | 天津市 | 西青区 | 120111 | tianjin | TJTJXQ |
QY049 | 天津市 | 天津市 | 津南区 | 120112 | tianjin | TJTJJN |
QY050 | 天津市 | 天津市 | 北辰区 | 120113 | tianjin | TJTJBC |
QY051 | 天津市 | 天津市 | 武清区 | 120114 | tianjin | TJTJWQ |
QY052 | 天津市 | 天津市 | 宝坻区 | 120115 | tianjin | TJTJBC |