1. poi导入Excel
首先要导入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 ==
2. poi导入excel到数据库
首先你要明白导入文件步骤:
1.实例化excel读取对象
2.加载excel文件
全部加载
选择加载
3.读取excel文件
全部读取
逐行读取
以下你看看那个更加适应你
顺便列出几个其他语言导入Excel文件,希望对你有帮助
PHP导入Excel文件
java把Excel文件数据导入数据库
PHP实现导出Excel文件通用方法
JXL生成的excel文件+JAVA文件下载功能
Java通用的Excel文件生成工具类,支持生成文件和浏览器直接下载
java处理Excel文件---excel文件的创建,删除,写入,读取
Java读取Excel文件
jxl解析Excel文件
JXL操作Excel文件
java POI读取Excel文件
java使用poi读取excel文件代码示例
用jxl生成Excel文件
PHP验证码文件类
PHP 下载远程文件
PHP获取远程文件的大小
php压缩CSS文件
PHP强制下载文件
php读取csv文件类
php 简单ftp文件上传范例
一个php 生成zip文件的类
3. poi导入excel进度条
车载导航跟手机导航不同之处在于,车载导航是专用设备,操作更简单,驾车导航专项功能更强一些,但综合功能远远逊于手机导航。手机导航目前完全可以满足驾车需要,而且综合功能更强大,远远超过车载导航。比如,手机导航可以借助互联网提供道路实况,可以提供更详细的地理信息,可以更方便地随时更新,可以提供除驾驶以外其他的骑行、步行等导航功能,可以借助地图之便提供城市公交、地铁、长途汽车、甚至铁路等信息。下面具体说明:
1、手机导航:启动手机导航的地图软件,打开呈现的就是地图,画面简洁,有立体感,突出道路、街道及各种信息点等,看起来信息非常丰富。它可以给行人使用,作为公交、地铁、的士等交通工具的指南,同时兼顾车上导航的用途,可以说用途非常广泛。同时还吸收了动态交通信息,回避拥堵、事故路段。手机基本都是采用的A-GPS定位方式,所以导航时需要使用流量。用手机导航作为车载导航,最大的优势是方便,手机就在身边,拿起来就用。中国的地理信息数据的采集是分资质的,高德有甲级测绘资质,百度要借用第三方,采集回来的数据都需要交给测绘局过审,不是想给用户更新就更新的,所以车载导航更新进度是差不多的,所不同的是哪家会更用心采集数据,数据收集更全。
2、车载导航从硬件来说目前主流是专车专用的车载DVD导航,嵌入式主机,和中控完美融合,一般有7寸,最大有10.2寸显示屏,比起手机5寸左右的显示要直观很多。1)在车载环境下,支持实景导航(需要硬件支持)。结合摄像头实时采集车外道路实景,利用GPS 信号实时定位车辆位置,方向指示标示直接实时叠加在实景画面上,进行非常直观的画面导航。2)沿路检索功能。支持沿规划路线两侧500 米范围内常用POI 类型检索,并清晰的显示POI 点在规划路线的左边还是右边。旅途中吃饭、住店、加油、停车等位置。大多导航都有这种功能的。3)车道信息指示。提前告知前方车道数量和转向信息,并依照规划的路线指示车主可以选择行驶的变道,避免违规或者绕路的困扰。4)电子眼数据单独升级。这个对行车可是一个非常实惠、有用的功能。
4. poi导入excel数据校验
POI是“Point of Interest”的缩写,意即兴趣点,可以简单理解为非地理意义的有意义的点,一个POI可以是一栋房子、一个商铺、一个邮筒、一个公交站等。
所以我们常提的POI就是指在地理信息系统中的各个商家的位置点。
因为在短视频平台上是以用户兴趣来形成的视频推荐展示,而商家的位置可以以POI的形式呈现在视频左下角。同时,POI里面可以挂载小程序,挂载团购套餐,代金券或者活动链接等等。
所以想要在视频上显示POI定位,以及通过点击POI实现产品的售卖,那么就需要对门店进行POI的认领,以及同步POI商品。
5. poi导入excel获取单元格格式
但是导入EXCEL实例是要POI包,这是专门操作excel的
poi 提供的对应的excel操作方法,要完成一个任务,就得自己想办法利用这些方法了,其实好好思考 一下就行了。觉得首先得先熟悉poi的方法。这些基本操作供参考
// 创建新的Excel 工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
// 在Excel工作簿中建一工作表,其名为缺省值
// 如要新建一名为"效益指标"的工作表,其语句为:
HSSFSheet sheet = workbook.createSheet("效益指标");
// 在索引0的位置创建行(最顶端的行)
HSSFRow row = heet.createRow((short)0);
//在索引0的位置创建单元格(左上端)
HSSFCell cell = row.createCell((short)0);
// 定义单元格为字符串类型
cell.setCellTypeHSSFCell.CELL_TYPE_STRING);
// 在单元格中输入一些内容
cell.setCellValue("POI Excel Model");
//下一行
row=sheet.createRow( (short)1);
cell=row.createCell( (short)0);
//设置单元格内容
cell.setCellValue( "Powered by 夏天");
// 新建一输出文件流
FileOutputStream fOut = new FileOutputStream(outputFile);
// 把相应的Excel 工作簿存盘
workbook.write(fOut); fOut.flush();
// 操作结束,关闭文件
fOut.close();
- 相关评论
- 我要评论
-