当前位置: 首页 > news >正文

poi导入excel

请看excel分类,其他的博客,下面的博客写的比较早,没啥太大利用价值,纯粹是复制代码


贴代码:

import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@Override
	public List<String> upload(PProduct product, InputStream is,String lastName)throws Exception {
		HqlBean hqlBean = HqlBeanCacheUtil.gethqlBeanCache().get("cn.digitalpublishing.dao.PProductDao").get("getList");
		String statusYes = DicCache.getIdByCode(DicConstants.DIC_STATUS, DicConstants.DATA_STATUS_AVAILABLE);
		Map<String, Object> condition = new HashMap<String, Object>();
		Map<String, Object> params = new HashMap<String, Object>();
		List<String> isbnList = new ArrayList<String>();
		byte[] excelByte = IOUtils.toByteArray(is);
		Workbook xwb = null;
		try {
			if(lastName.equals("xlsx")){
				xwb = new XSSFWorkbook(new ByteArrayInputStream(excelByte));
			}else{
				xwb = new HSSFWorkbook(new ByteArrayInputStream(excelByte));
			}
        
			Sheet sheet = xwb.getSheetAt(0);
			for (int i = sheet.getFirstRowNum() + 1; i <= sheet.getPhysicalNumberOfRows(); i++) {
				condition.clear();
				Row row = sheet.getRow(i);
				if (row != null) {
					Cell isbn = row.getCell(0);
					Cell title = row.getCell(1);
					Cell publish = row.getCell(2);
					Cell price = row.getCell(3);
					Cell firstAuthor = row.getCell(4);
					Cell translator = row.getCell(5);
					Cell size = row.getCell(6);
					Cell binding = row.getCell(7);
					Cell pubDate = row.getCell(8);
					String isDiagiTal = DicCache.getIdByCode(DicConstants.ISDIGITAL, DicConstants.ISDIGITAL_0);
					int packageNum = 4;
					int bookNum = 4;
					String isTeaching = "";//DicCache.getIdByCode(DicConstants.DIC_STATUS, DicConstants.DATA_STATUS_AVAILABLE)
					
					
					if ((isbn != null)||title != null||publish != null||price != null||firstAuthor != null) {
						
						params.put("isbn", isbn.toString());
						params.put("title", title.toString());
						//params.put("publish", publish.toString());     出版社
						BigDecimal _price = new BigDecimal(price.toString());
						params.put("price", _price);
						params.put("firstAuthor", firstAuthor.toString());
						//PProduct _product = this.daoFacade.getProductDao().getList(params, "", hqlBean).get(0);
						List<PProduct> _listProduct = this.daoFacade.getProductDao().getList(params, "", hqlBean);
						if(_listProduct.size()==0){
							ServiceFactory service = new ServiceFactoryImpl();
							PProductTypeService saleItemService = service.getPProductTypeService();
							PProductType productTypeByCode = saleItemService.getProductTypeByCode("book");
							PProduct _proLine = new PProduct();
							_proLine.setIsbn(isbn.toString());
							_proLine.setTitle(title.toString());
							_proLine.setPublish(publish.toString());
							_proLine.setPrice(_price);
							_proLine.setFirstAuthor(firstAuthor.toString());
							_proLine.setTranslator(translator.toString());
							_proLine.setSize(size.toString());
							_proLine.setBinding(binding.toString());
							/*String _date = pubDate.toString();
							SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");
						    Date cd=sdf.parse(_date);
							_proLine.setPubDate(cd);*/
							_proLine.setIsDiagiTal(isDiagiTal);
							_proLine.setPackageNum(packageNum);
							_proLine.setBookNum(bookNum);
							_proLine.setIsTeaching(isTeaching);
							
							_proLine.setProductType(productTypeByCode);
							_proLine.setOwnerFlag(DicCache.getIdByCode(DicConstants.PRODUCT_OWNER_FLAG, DicConstants.PRODUCT_OWNER_FLAG_OTHER));
							_proLine.setStatus(DicCache.getIdByCode(DicConstants.DIC_STATUS, DicConstants.DATA_STATUS_AVAILABLE));
							_proLine.setCreateOn(new Date());
							/*String projectCode = EditorailSerialCode.getCode(Integer.valueOf(DicConstants.CODE_TYPE_PROJECT), crmCorpTypeRelationship.getCorp().getCode());
							_proLine.setCode(projectCode);
							_proLine.setProductIntegerNum(projectCode);*/
				            
							this.insertProduct(_proLine);
						}else{
							isbnList.add(title.toString());
						}
					}else{
						throw new RuntimeException("第"+i+"行数据不完整,请认真填写");
					}
				}
				
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return isbnList;
	}

相关文章:

  • 【烈日炎炎战后端】JAVA虚拟机(3.6万字)
  • 2013编程之美全国挑战赛第一场-传话游戏
  • 接口调试方法
  • 【烈日炎炎战后端】JAVA多线程(11.2万字)
  • 托管和非托管转换新方法:Marshaling Library(zz) 【转】
  • 为什么要重写equals()方法与hashCode()方法
  • 【烈日炎炎战后端】计算机网络(4.2万字)
  • linux中c语言errno的使用
  • 【烈日炎炎战后端】操作系统(1.1万字)
  • for while (list each)的用法
  • 【烈日炎炎战后端】设计模式(1.1万字)
  • 【烈日炎炎战后端】 数据结构(0.7万字)
  • JavaScript学习总结——原型
  • 2的幂在约瑟夫环问题的应用
  • 【烈日炎炎战后端】MySQL理论(2.8万字)
  • 【译】JS基础算法脚本:字符串结尾
  • 30秒的PHP代码片段(1)数组 - Array
  • avalon2.2的VM生成过程
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • CSS实用技巧干货
  • Flannel解读
  • flutter的key在widget list的作用以及必要性
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • jquery cookie
  • node-glob通配符
  • React-生命周期杂记
  • springboot_database项目介绍
  • TypeScript实现数据结构(一)栈,队列,链表
  • 构造函数(constructor)与原型链(prototype)关系
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 三分钟教你同步 Visual Studio Code 设置
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 思维导图—你不知道的JavaScript中卷
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 用Visual Studio开发以太坊智能合约
  • 智能合约开发环境搭建及Hello World合约
  • 自定义函数
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • Linux权限管理(week1_day5)--技术流ken
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • (1)Nginx简介和安装教程
  • (c语言)strcpy函数用法
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (TOJ2804)Even? Odd?
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (三) diretfbrc详解
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (转)visual stdio 书签功能介绍
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?