poi导入导出
很全的工具类满足日常开发需要下载地址
或许只有我知道我写的是什么
导出的例子----------------------------------
public void daochu() throws Exception{
// 调用封装类执行导出
// 导出文件存放的路径,并且是虚拟目录指向的路径
String filePath = Tools.getValue("poi_url");
// 导出文件的前缀
String filePrefix = "xztc";
// -1表示关闭自动刷新,手动控制写磁盘的时机,其它数据表示多少数据在内存保存,超过的则写入磁盘
int flushRows = 100;
// 定义导出数据的title
List<String> fieldNames = new ArrayList<String>();
fieldNames.add("学号");
fieldNames.add("姓名");
fieldNames.add("性别");
fieldNames.add("班级");
fieldNames.add("电话");
fieldNames.add("岗位");
// 告诉导出类数据list中对象的属性,让ExcelExportSXXSSF通过反射获取对象的值
List<String> fieldCodes = new ArrayList<String>();
fieldCodes.add("loginName");
fieldCodes.add("name");
fieldCodes.add("xingbie");
fieldCodes.add("banji");
fieldCodes.add("phone");
fieldCodes.add("yxJob");
// 开始导出,执行一些workbook及sheet等对象的初始创建
ExcelExportSXXSSF excelExportSXXSSF = ExcelExportSXXSSF.start(filePath,
filePath, filePrefix, fieldNames, fieldCodes, flushRows);
// 导出的数据通过service取出
List<Approval> list = approvalService.daochu("推荐");
// 执行导出
excelExportSXXSSF.writeDatasByObject(list);
// 输出文件,返回下载文件的http地址,已经包括虚拟目录
String webpath = excelExportSXXSSF.exportFile();
System.out.println(webpath);
//使下载名字不乱码
String framename = new String("岗位信息表.xlsx".getBytes("gbk"),"iso-8859-1");
//通过文件获取MIME类型
String contentType =ServletActionContext.getRequest().getServletContext().getMimeType(webpath);
String contentDisposition = "attachment;filename=" + framename;
FileInputStream input = new FileInputStream(webpath);
HttpServletResponse response = ServletActionContext.getResponse();
response.setHeader("Content-Type", contentType);
response.setHeader("Content-Disposition", contentDisposition);
ServletOutputStream output = response.getOutputStream();
IOUtils.copy(input, output);
input.close();
}
--------------导入
service层代码:
public class YpxxImportServiceImpl implements HxlsOptRowsInterface {
@Autowired
private YpxxMapper ypxxMapper;
@Override
public String optRows(int sheetIndex, int curRow, List<String> rowlist)
throws Exception {
try {
//得到导入的数据
//rowlist数据 是一行数据,按照模版解析
String mc = rowlist.get(0);//通用名
String jx = rowlist.get(1);//剂型
String gg = rowlist.get(2);//规格
String zhxs = rowlist.get(3);//转换系数
String zbjg = rowlist.get(4);//中标价格
String scqymc = rowlist.get(5);//生产企业
String spmc = rowlist.get(6);//商品名
String jyzt = rowlist.get(7);//交易状态
//进行校验
//校验中标价格合法性
//校验交易状态的合法性
if(jyzt == null || (!jyzt.equals("1") && !jyzt.equals("2"))){
return "交易状态输入值不对,请输入1:正常,2:暂停";
}
//添加唯一校验
//校验通用名、剂型、规格、转换系数、生产企业、商品名
//思路:根据通用名、剂型、规格、转换系数、生产企业、商品名,查询,如果查询到记录,说明 存在重复记录
//.....
Ypxx ypxx = new Ypxx();
ypxx.setId(UUIDBuild.getUUID());
ypxx.setMc(mc);
ypxx.setJx(jx);
ypxx.setGg(gg);
ypxx.setZhxs(zhxs);
ypxx.setScqymc(scqymc);
ypxx.setSpmc(spmc);
ypxx.setZbjg(Float.parseFloat(zbjg));
ypxx.setJyzt(jyzt);
//校验调用mapper
ypxxMapper.insert(ypxx);
} catch (Exception e) {
e.printStackTrace();
return "导入失败!";
}
return "success";
}
}
action:
//药品导入提交
@RequestMapping("/importypxxsubmit")
public @ResponseBody SubmitResultInfo importypxxsubmit(
//写上传的文件
MultipartFile ypxximportfile
)throws Exception{
//将上传的文件写到磁盘
String originalFilename = ypxximportfile.getOriginalFilename();
//写入磁盘的文件
File file = new File("D:/upload/linshi/"+UUIDBuild.getUUID()+originalFilename.substring(originalFilename.lastIndexOf(".")));
if(!file.exists()){
//如果文件目录 不存在则创建
file.mkdirs();
}
//将内存中的文件写磁盘
ypxximportfile.transferTo(file);
//上传文件磁盘上路径
String absolutePath = file.getAbsolutePath();
//调用工具类进行药品目录 导入
HxlsRead xls2csv = null;
try {
//第一个参数就是导入的文件
//第二个参数就是导入文件中哪个sheet
//第三个参数导入接口的实现类对象
xls2csv = new HxlsRead(absolutePath,1,ypxxImportService);
xls2csv.process();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
//提示导入成功条数
long success_num = xls2csv.getOptRows_success();
//导入失败数量
long failure_num = xls2csv.getOptRows_failure();
//对导入失败记录处理
//获取导入失败记录
//xls2csv.getFailrows()
//获取导入记录的title
//xls2csv.getRowtitle();
//获取导入失败原因
//xls2csv.getFailmsgs()
//将上边获取到的失败记录、title、失败原因,导出成一个 excel
//使用工具类进行导出,得到导出文件下载路径
//......
return ResultUtil.createSubmitResult(ResultUtil.createSuccess(Config.MESSAGE, 314, new Object[]{
success_num,failure_num
}));
}