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.修 ...
随机推荐
- 关于vue 中elementui 的表格边框隐藏
最近写到一个项目需要实现边框隐藏,网上查找了好多笔记,回答都好含糊不清.为此,记录一下自己的实现方法: 需求: 要将如下表格边框去除 效果图: ...
- java实现第五届蓝桥杯年龄巧合
年龄巧合 小明和他的表弟一起去看电影,有人问他们的年龄.小明说:今年是我们的幸运年啊.我出生年份的四位数字加起来刚好是我的年龄.表弟的也是如此.已知今年是2014年,并且,小明说的年龄指的是周岁. 请 ...
- opencl(2)平台、设备、上下文的获取与信息获取
1:平台 1)获取平台id cl_int clGetPlatformIDs( cl_uint num_entries, //想要获取的平台数 cl_platform_id * flatfor ...
- 容器技术之Docker私有镜像仓库docker-distribution
在前边的博客中我们说到docker的架构由docker客户端.服务端以及仓库组成:docker仓库就是用来存放镜像的地方:其实docker registry我们理解为存放docker镜像仓库的仓库比较 ...
- zabbix 监控https URL
由于生产环境的需要,zabbix 需要监控https的url,但是因为zabbix 是aws ec2 zabbix web绑定了域名,所以没有办法所代理. 有兴趣的可以看官方文档 https://ww ...
- TypeScript使用体会(一)
typescript使用体会 近期接手了一个公司项目是由TS写的,第一次用在这里做一下简单的使用体会 个人觉得TS与JS相差不多,只是多了一些约束(可能自己还没体会到精髓) typescript是Ja ...
- POJ - 2184 Cow Exhibition 题解
题目大意 有 \(N(N \le 100)\) 头奶牛,没有头奶牛有两个属性 \(s_i\) 和 \(f_i\),两个范围均为 \([-1000, 1000]\). 从中挑选若干头牛,\(TS = \ ...
- 有关指针 -> 和* 的重载
1, #include<iostream> #include<string> using namespace std; class test{ int i; public: t ...
- Java操作符,<<、>>等
数学意义:在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方. 计算:3 << 2 3 << 2,则是将数字3左移2位 1. ...
- CSS里盒子模型中【margin垂直方向边界叠加】问题及解决方案
边界重叠是指两个或多个盒子(可能相邻也可能嵌套)的相邻边界(其间没有任何非空内容.补白.边框)重合在一起而形成一个单一边界. 两个或多个块级盒子的垂直相邻边界会重合. 如果都是正边界,结果的边界宽度是 ...