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.修 ...
随机推荐
- DDD之3实体和值对象
图中是一个别墅的模型,代表实体,可以真实的看得到.那么在DDD设计方法论中,实体和值对象是什么呢? 背景 实体和值对象是领域模型中的领域对象,是组成领域模型的基础单元,一起实现实体最基本的核心领域逻辑 ...
- (Java实现) 光荣的梦想
光荣的梦想 Time Limit:10000MS Memory Limit:65536K Total Submit:110 Accepted:45 Description Prince对他在这片大陆上 ...
- Java实现控制台版CS
也可以把这四个类直接复制下去放在一个包下面 父类 package Cs1_6; public abstract class Persion { public abstract void Attack( ...
- JVM 由哪些部分组成?
JVM 由哪些部分组成? 解析:这是对 JVM 体系结构的考察 答:JVM 的结构基本上由 4 部分组成: 类加载器,在 JVM 启动时或者类运行时将需要的 class 加载到 JVM 中 执行引擎, ...
- Linux 系统资源查看
vmstat监控系统资源 vm [刷新延时 刷新次数],vmstat 1 3 dmesg查看开机时内核检测信息 dmesg | grep CPU free命令查看内存使用状态 查看cpu信息:cat ...
- 启动appium server时打印日志时间
在调试脚本的时候想看查找元素和执行命令花了多少时间,我们可以在启动appium server的时候加上启动参数,实现我们的需求. 1)输入:appium h,可以查看appium提供的启动参数有哪些. ...
- Java虚拟机性能调优(一)
Java虚拟机监控与调优,借助Java自带分析工具. jps:JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程 jstat:JVM Statistics M ...
- jquery 手写一个简单浮窗的反面教材
前言 初学jquery写的代码,陈年往事回忆一下. 正文 介绍一下大体思路 思路: 1.需要控制一块区域,这块区域一开始是隐藏的. 2.这个区域需要关闭按钮,同时我需要写绑定事件,关闭的时候让这块区域 ...
- Dedecms 修改当前位置样式
当前列表页间隔符样式修改 后台-->系统基本参数-->核心设置-->栏目位置的间隔符号 只有二级位置栏目时的间隔符去除 找到include文件中的typelink.class.php ...
- Chrome浏览器 Console调试台的简单使用
打开调试台 方法1:在chrome浏览器中打开网页,按下F12,点击下图框选内容. 方法2: 浏览器中鼠标右键选择查看网页源代码后,再按上图操作. 调试台的功能 (因为是第一次使用这个调试台,只能罗 ...