import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import me.tbs.jxguorong.core.utils.DateUtil;
import me.tbs.jxguorong.core.utils.FileUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
public class text {
//把从页面传过来的文件写入新建路径文件中
//文件内容 路径 传入时的文件名称(带后缀)
protected String copyFile(InputStream in, String path, String originalName) throws IOException {
//创建新的excel表(文件名称)
String newFileName = DateUtil.getFileNameByDate() + "." + FileUtil.getFileExt(originalName);// 新文件名
File file = new File(path);
if (!file.exists()) {
file.mkdirs();
}
FileOutputStream fs = new FileOutputStream(path + File.separator + newFileName);
byte[] buffer = new byte[1024 * 1024];
int bytesum = 0;
int byteread = 0;
while ((byteread = in.read(buffer)) != -1) {
bytesum += byteread;
fs.write(buffer, 0, byteread);
fs.flush();
}
// Thumbnails.of(path + "\\" + newFileName).size(80,
// 80).outputFormat("jpg").toFiles(Rename.PREFIX_DOT_THUMBNAIL);
fs.close();
in.close();
return newFileName;
}
//批量导入出库卡数据,获取Excel表的数据并存储
//路径
public List<Jyk> readExcelJyk(String excelUrl) throws BiffException, IOException {
List<Jyk> list = new ArrayList<Jyk>();
File xlsFile = new File(excelUrl);
Workbook book = Workbook.getWorkbook(xlsFile);
Sheet sheet = book.getSheet(0);
int rows = sheet.getRows();
for (int i = 1; i < rows; i++) {
Jyk jyk = new Jyk();
//i代表excel表中的行数,1代表excel第1列
jyk.setXh(sheet.getCell(1, i).getContents());
jyk.setKm(sheet.getCell(2, i).getContents());
jyk.setGmrxm(sheet.getCell(3, i).getContents());
jyk.setGmrdh(sheet.getCell(4, i).getContents());
jyk.setSkyh(sheet.getCell(5, i).getContents());
jyk.setSksj(sheet.getCell(6, i).getContents());
jyk.setSkje(sheet.getCell(7, i).getContents());
jyk.setSklx(sheet.getCell(8, i).getContents());
list.add(jyk);
}
return list;
}
//获取页面传过来的file文件
public String Hykkimport(@RequestParam(value = "file", required = true) MultipartFile file,
RedirectAttributes redirectAttributes) {
try {
String ss="";
int i = 0;// 记录导入不成功数量
if (file != null) {
//把获取的文件、保存的路径、从前台传过来的文件名称(带后缀)传入copyFile(【三个参数】)方法中
String fileName = this.copyFile(file.getInputStream(), this.getUploadRootDir() + hyFileUrl,
file.getOriginalFilename());
String jykExcelUrl = this.getUploadRootDir() + hyFileUrl + File.separator + fileName;
List<Jyk> list = jykService.readExcelJyk(jykExcelUrl);
for (Jyk jyk : list) {
if (jykService.checkJyk2(jyk.getXh(),jyk.getKm())) {
jykService.saveJyk(jyk);
} else {
ss+=jyk.getXh()+"\\n";
i++;
}
}
}
if (i == 0) {
redirectAttributes.addFlashAttribute("message", "成功导入会员");
} else {
redirectAttributes.addFlashAttribute("message","共"+i+ "个会员导入失败\\n导入失败的卡号分别是:\\n"+ss);
}
}catch (Exception e) {
redirectAttributes.addFlashAttribute("message", "导入失败,请严格按照说明来操作");
}
return "redirect:/jyk";
}
}
java springmvc excel表导入功能
最新推荐文章于 2022-11-05 13:26:54 发布