2020-06-30 pol实现execl导入导出
1.导入依赖
<!-- 解析表格 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.11</version>
</dependency>
2.spring-mvc.xml配置
<!-- 声明文件上传解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置文件上传的最大大小(字节)的限制 -->
<property name="maxUploadSize" value="104857600"/>
<property name="maxInMemorySize" value="4096"/>
<property name="defaultEncoding" value="UTF-8"/>
</bean>
3.controller
导入(即上传)
@RequestMapping("/uploadregion.do")
public String uplodRegion(MultipartFile myfile,HttpServletRequest request) throws IOException {
//1.存储上传的文件
//1.1通过myfile获得文件名称
String oldname=myfile.getOriginalFilename();
//1.2判断oldname中是否有路径部分,如果有进行截取
if(oldname.indexOf("/")>-1){
oldname = oldname.substring(oldname.lastIndexOf("/")+1);
}
String newname= UUID.randomUUID().toString()+"_"+oldname;
//2.解析上传的文件,解析出数据
String savepath= request.getServletContext().getRealPath("/")+"upload\\";
File file=new File(savepath);
if(!file.isDirectory()){
file.mkdir();
}
//3.根据解析出来的数据进行存储
File savefile=new File(savepath,newname);
try {
myfile.transferTo(savefile);
} catch (IOException e) {
e.printStackTrace();
}
String filePath=savepath+newname;
HSSFWorkbook workbook=new HSSFWorkbook(new FileInputStream(filePath));
HSSFSheet sheet=workbook.getSheetAt(0);//第一个工作簿
int i=0;
List<Region> regions=new ArrayList<>();
Region region=null;
for (Row cells : sheet) {
if(i==0){
i=1;
continue;
}
region=new Region();
String id=cells.getCell(0).getStringCellValue();
String province=cells.getCell(1).getStringCellValue();
String city=cells.getCell(2).getStringCellValue();
String district=cells.getCell(3).getStringCellValue();
String postcode=cells.getCell(4).getStringCellValue();
province=province.substring(0,province.length()-1);
city=city.substring(0,city.length()-1);
district=district.substring(0,district.length()-1);
String info=province+city+district;
String[] headByString= PinYin4jUtils.getHeadByString(info);
String shortcode=String.join("",headByString);
//城市编码
String citycode=PinYin4jUtils.hanziToPinyin(city,"");
region.setId(id);
region.setCity(city);
region.setCitycode(citycode);
region.setDistrict(district);
region.setPostcode(postcode);
region.setProvince(province);
region.setShortcode(shortcode);
regions.add(region);
}
regionService.addAll(regions);
return null;
}
导出(即下载)
@RequestMapping("/outregion.do")
public void out(HttpServletRequest request, HttpServletResponse response) throws IOException {
List<Region> list=regionService.findAll(null);
HSSFWorkbook workbook=new HSSFWorkbook();
HSSFSheet sheet=workbook.createSheet("分区数据");
HSSFRow row=sheet.createRow(0);
row.createCell(0).setCellValue("区域编号");
row.createCell(1).setCellValue("省份");
row.createCell(2).setCellValue("城市");
row.createCell(3).setCellValue("区域");
row.createCell(4).setCellValue("邮编");
for (Region region:list){
HSSFRow datarow=sheet.createRow(sheet.getLastRowNum()+1);
datarow.createCell(0).setCellValue(region.getId());
datarow.createCell(1).setCellValue(region.getProvince());
datarow.createCell(2).setCellValue(region.getCity());
datarow.createCell(3).setCellValue(region.getDistrict());
datarow.createCell(4).setCellValue(region.getPostcode());
}
String filename="区域数据.xls";
//请求类型
String contentType=request.getSession().getServletContext().getMimeType(filename);
//输出流
ServletOutputStream out=response.getOutputStream();
//响应类型
response.setContentType(contentType);
//获取用户代理
String agent=request.getHeader("User-Agent");
//使用工具类进行解析
filename= FileUtils.encodeDownloadFilename(filename,agent);
//设置头文件信息
response.setHeader("content-disposition","attachment;filename="+filename);
workbook.write(out);
}
2020-06-30 pol实现execl导入导出的更多相关文章
- MVC execl 导入导出
MVC execl 导入导出 <input id="xls" name="xls" type="file" style="w ...
- 基于NPOI的Execl导入导出例子
源地址:http://bbs.csdn.net/topics/390830774
- 180620-mysql之数据库导入导出
文章链接:https://liuyueyi.github.io/hexblog/2018/06/20/180620-mysql之数据库导入导出/ mysql之数据库导入导出 实际工作中,需要做一下数据 ...
- 【Java EE 学习 30】【闪回】【导入导出】【管理用户安全】【分布式数据库】【数据字典】【方案】
一.闪回 1.可能的误操作 (1)错误的删除了记录 (2)错误的删除了表 (3)查询历史记录 (4)撤销已经提交了的事务. 2.对应着以上四种类型的误操作,有四种闪回类型 (1)闪回表:将表回退到过去 ...
- Magicodes.IE 在100万数据量下导入导出性能测试
原文作者:HueiFeng 前言 目前Magicodes.IE更新到了2.2.3,感谢大家的支持,同时建议大家在使用过程中如果遇到一些问题或者说需要一些额外的功能可以直接提issues,当然更建议大家 ...
- 导入导出Excel
最近需要频繁的使用导入导出,各么,又不想使用ms的PIA,在4.0以下,存在版本兼容的问题. 于是网上查找了很久,找到两款开源的excel组件. 1.CSharpJExcel,这是JExcel的.ne ...
- .NET中导入导出Excel总结
前一段时间,做了Excle的导入和导出,在此记录开发思路及技术要点,以便在今后开发中参考. ...
- SQL SERVER 与ACCESS、EXCEL的数据导入导出转换
* 说明:复制表(只复制结构,源表名:a 新表名:b) select * into b from a where 1<>1 * 说明:拷贝表(拷贝数据,源表名:a 目标表名:b) ...
- 通过 Sqoop1.4.7 将 Mysql5.7、Hive2.3.4、Hbase1.4.9 之间的数据导入导出
目录 目录 1.什么是 Sqoop? 2.下载应用程序及配置环境变量 2.1.下载 Sqoop 1.4.7 2.2.设置环境变量 2.3.设置安装所需环境 3.安装 Sqoop 1.4.7 3.1.修 ...
随机推荐
- 第五届蓝桥杯JavaC组省赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.猜年龄 题目描述 小明带两个妹妹参加元宵灯会.别人问她们多大了,她们调皮地说:"我们俩的年龄之积是年龄之和的6倍" ...
- Pycharm添加Python文件模板
#!/usr/bin/env python# -*- encoding: UTF-8 -*-'''=================================================@P ...
- install-package : 由于无法加载项目 mydemo 的详细信息,操作失败
安装nuget package包提示错误 install-package : 由于无法加载项目 mydemo 的详细信息,操作失败 解决方法 项目用dotnet cli 命令dotnet new mv ...
- 因为 MongoDB 没入门,我丢了一份实习工作
有时候不得不感慨一下,系统升级真的是好处多多,不仅让我有机会重构了之前的烂代码,也满足了我积极好学的虚荣心.你看,Redis 入门了.Elasticsearch 入门了,这次又要入门 MongoDB, ...
- 在CentOS7上源码安装OpenResty
您必须将这些库perl 5.6.1+libreadlinelibpcrelibssl安装在您的电脑之中. 对于 Linux来说, 您需要确认使用 ldconfig 命令,让其在您的系统环境路径中能找到 ...
- 阿里巴巴二面凉经 flatten扁平化对象与数组
2020-04-13 阿里巴巴二面凉经 flatten扁平化对象与数组 在线笔试的时候写错了一点点 太可惜了哎 还是基础不够扎实... const input = { a: 1, b: [ 1, 2, ...
- 十几万条数据的表中,基于帝国cms 。自己亲身体验三种批量更新数据的方法,每一种的速度是什么样的
需求是 上传Excel 读取里面的数据.根据Excel中某一个字段,与数据表中的一个字段的唯一性.然后把 Excel表中数据和数据库表中数据一次更改.本次测试一次更新31条数据. 本次测试基于帝国cm ...
- CGAL 获取相关功能的依赖头文件
CGAL 获取相关功能的依赖头文件 由于CGAL是header include only.只需要头文件就可以实现相关的功能.有时候为了实现一个简单的功能, 在研究具体实现的时候能够知道这个功能对应的头 ...
- (五)连接查询(SQL99标准)、子查询、分页查询、联合查询
一.连接查询(SQL99标准) 1.含义:当要查询的数据来自多张表时要使用连接查询 2.语法: select 查询列表 from 表1 别名 [连接类型] join 表2 别名 on 连接条件 [wh ...
- C Primer Plus(三)
重读C Primer Plus ,查漏补缺 重读C Primer Plus,记录遗漏的.未掌握的.不清楚的知识点 文件输入/输出 1.fgets函数在读取文件内容时会将换行符读入,但gets不会,fp ...