1. easypoi导出excel的内容为空
用过的处理excel工具包有easypoi和easyexcel.从使用上来说,都挺简单易用。性能上都存在文件处理普遍存在的问题,大文件处理慢、占资源等问题。而easyexcel号称低内存消耗,对比上确实是easyexcel内存消耗较小。但是其实easypoi也有提供低内存消耗的处理方式,底层使用的方式也是一样的,就看谁封装的好用一点是了。
2. easypoi导入导出excel
如果表头固定在第一行,可以扫描表头,获得你需要的数据的列号,例如下面的代码寻找姓名、性别、手机的列号: var c_name,c_sex,c_mobile; for (i=0;i
3. easypoi导出excel合并单元格
spring官方包里,lib目录里除了带resource后缀的jar包,初学建议都加上,入门之后,你就明白你的项目里需要哪些包,不需要哪些包了。带resource后缀的jar是源码。
4. easypoi导出多sheet
首先要导入spring相关包,poi,和fileupload包,我是使用maven构建的。
一.导入excel
(1)使用spring上传文件
a.前台页面提交
<form name="excelImportForm" action="${pageContext.request.contextPath}/brand/importBrandSort" method="post" onsubmit="return checkImportPath();" enctype="multipart/form-data" id="excelImportForm">
<input type="hidden" name="ids" id="ids">
<div >
<div >
<label ><input id="excel_file" type="file" name="filename" accept="xls"/></label>
<div >
<input id="excel_button" type="submit" value="导入Excel"/>
</div>
</div>
</div>
<div >
<button type="button" data-dismiss="modal" onClick="uncheckBoxes();">取消</button>
</div>
b.后台spring的controller进行相关操作,这里主要讲的是使用spring上传文件,和读取文件信息。
使用spring上传文件之前,需要配置bean。
<bean id="multipartResolver" ></bean>@RequestMapping(value = "/importBrandSort", method = RequestMethod.POST)
public ModelAndView importBrandSort(@RequestParam("filename") MultipartFile file,
HttpServletRequest request,HttpServletResponse response) throws Exception {
String temp = request.getSession().getServletContext()
.getRealPath(File.separator)
+ "temp"; // 临时目录
File tempFile = new File(temp);
if (!tempFile.exists()) {
tempFile.mkdirs();
}
DiskFileUpload fu = new DiskFileUpload();
fu.setSizeMax(10 * 1024 * 1024); // 设置允许用户上传文件大小,单位:位
fu.setSizeThreshold(4096); // 设置最多只允许在内存中存储的数据,单位:位
fu.setRepositoryPath(temp); // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
// 开始读取上传信息
//
int index = 0;
/* List fileItems = null;
try {
fileItems = fu.parseRequest(request);
}
catch (Exception e) {
e.printStackTrace();
}
Iterator iter = fileItems.iterator(); // 依次处理每个上传的文件
FileItem fileItem = null;
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();// 忽略其他不是文件域的所有表单信息
if (!item.isFormField()) {
fileItem = item;
// index++;
}
}
if (fileItem == null)
return null;
*/
if (file == null)
return null;
logger.info(file.getOriginalFilename());
String name = file.getOriginalFilename();// 获取上传文件名,包括路径
//name = name.substring(name.lastIndexOf("\\") + 1);// 从全路径中提取文件名
long size = file.getSize();
if ((name == null || name.equals("")) && size == 0)
return null;
InputStream in = file.getInputStream();
List<BrandMobileInfoEntity> BrandMobileInfos = brandService
.importBrandPeriodSort(in);
// 改为人工刷新缓存KeyContextManager.clearPeriodCacheData(new
// PeriodDimensions());// 清理所有缓存
int count = BrandMobileInfos.size();
String strAlertMsg ="";
if(count!=0){
strAlertMsg= "成功导入" + count + "条!";
}else {
strAlertMsg = "导入失败!";
}
logger.info(strAlertMsg);
//request.setAttribute("brandPeriodSortList", BrandMobileInfos);
//request.setAttribute("strAlertMsg", strAlertMsg);
request.getSession().setAttribute("msg",strAlertMsg);
return get(request, response);
//return null;
}
代码中的注释部分是如果不使用spring的方式,如何拿到提交过来的文件名(需要是要apache的一些工具包),其实使用spring的也是一样,只是已经做好了封装,方便我们写代码。
代码中的后半部分是读取完上传文文件的信息和对数据库进行更新之后,输出到前台页面的信息。
上述代码中: InputStream in = file.getInputStream();
List<BrandMobileInfoEntity> BrandMobileInfos = brandService
.importBrandPeriodSort(in);读取excel的信息。
(2)使用poi读取excel
a.更新数据库
@Override
public List<BrandMobileInfoEntity> importBrandPeriodSort(InputStream in) throws Exception {
List<BrandMobileInfoEntity> brandMobileInfos = readBrandPeriodSorXls(in);
for (BrandMobileInfoEntity brandMobileInfo : brandMobileInfos) {
mapper.updateByConditions(brandMobileInfo);
}
return brandMobileInfos;
}
这部分是sevice层的代码,用于读取excel信息之后更新数据库数据,我这里是使用mybatis。定义一个类BrandMobileInfoEntity,用与保存excel表每一行的信息,而List< BrandMobileInfoEntity > 则保存了全部信息,利用这些信息对数据库进行更新。
b.读取excel信息
private List<BrandMobileInfoEntity> readBrandPeriodSorXls(InputStream is)
throws IOException, ParseException {
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
List<BrandMobileInfoEntity> brandMobileInfos = new ArrayList<BrandMobileInfoEntity>();
BrandMobileInfoEntity brandMobileInfo;
// 循环工作表Sheet
for (int numSheet = 0;
numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
if (hssfSheet == null) {
continue;
}
// 循环行Row
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
brandMobileInfo = new BrandMobileInfoEntity();
HSSFRow hssfRow = hssfSheet.getRow(rowNum);
for (int i = 0; i < hssfRow.getLastCellNum(); i++) {
HSSFCell brandIdHSSFCell = hssfRow.getCell(i);
if (i == 0) {
brandMobileInfo.setBrandId(Integer
.parseInt(getCellValue(brandIdHSSFCell)));
} else if (i == 1) {
continue;
} else if (i == 2) {
brandMobileInfo.setMobileShowFrom(Integer.parseInt(getCellValue(brandIdHSSFCell)));
} else if (i == 3) {
brandMobileInfo.setMobileShowTo(Integer.parseInt(getCellValue(brandIdHSSFCell)));
} else if (i == 4) {
brandMobileInfo.setSellMarkValue(getCellValue(brandIdHSSFCell));
} else if (i == 5) {
brandMobileInfo.setWarehouse(getCellValue(brandIdHSSFCell));
} else if (i ==
5. easypoi读取excel
三毛游App主打境外景区自动讲解功能,实现走到哪听到哪的语音体验之旅,同时提供专业的境外游信息,在不同的国家都有一批三毛游粉丝,为游客提供旅途中语言、安全、吃喝玩乐等帮助。
功能特色:
景区语音中文讲解
专业主播风趣生动的全中文讲解,听得懂!
告别生硬机械的讲解,让旅游更随心,透过声音发现不一样的风景
景区彩绘中文地图
中文实景彩绘景区地图,看得懂!
图文并茂了解景区概况,参观途中即时实景比对,有中文SO EASY!
导览自动手动双模式
自动讲解&手动讲解自由切换,用就懂!
跟着三毛,走到哪,就讲解到哪,想听多久听多久!
景区精确定位
采用GPS+微定位技术,不难懂!
景区内即时定位,再也不怕找不着北!
APP核心功能及亮点
专利微定位纠偏自动触发讲解:通过自主专利GPS+微定位景区导览技术,实现了游览景点时候走到哪里听到哪里;
AI智能识别博物馆展品:手机对着展品即可快速识别,并自动讲解。让您的博物馆之旅不再懵比。
精美手绘景区地图:三维实景效果的景区手绘导览图,线路指引让您参观有序;
360°VR全景:足不出户身临其境赏美景。
新增听游目的地功能,深入了解景区当地文化习俗
专业主播真人录音:从央视主播到名人大咖的真人录音讲解,让名人给你当导游。
旅游FM电台:可以听的旅行攻略,目的地历史人文、风俗礼仪、禁忌、美食购物、玩法攻略全覆盖,让您足不出户听游世界。
少儿学堂:少儿精品美育线上课程,学艺术的孩子不容易变坏
每日一宝:每天学点历史,从每日一宝开始
今日说画:一日一画,与艺术不期而遇
最新展览:汇集全球艺术文化展览资讯
花草识别:花草植物识别,拍照识花,1秒就知道植物的名字和故事。
旅游地图:在国内外都可以查看全球地图信息,比谷歌地图更符合国人使用习惯。全程访问稳定,最新境外POI信息,支持中英文操作和搜索,是旅行,求学,导航,查路线必备图。
离线下载:流量不再心疼,提前下载离线使用,无信号也能正常使用。
整合必备便捷工具:天气、翻译、汇率查询,不用重复下载多个旅行工具
平台特色:
【语音中文讲解】——听主播风趣幽默的讲解景区背后的故事,这个携程没有
【彩绘景区地图】——图文并茂的直观了解景区,这个途牛也没有
【景区精准定位】——到景区自动讲解开启,手机放进口袋里走哪听到哪,去哪儿更没有
【出国专业指引】——语音问路卡、语音求助、吃喝玩乐
6. easypoi导入excel数据为空
需要整合<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
- 相关评论
- 我要评论
-