`

用POI导入Excel内容时

POI 
阅读更多
package 
[align=center][align=center][align=left][/align][/align][/align]
oa.business;

import java.io.File;
import java.io.IOException;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import org.apache.commons.lang3.StringUtils;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
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.ss.usermodel.WorkbookFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;



public class ImportExcelManager extends ManagerBase{

@Autowired
private DataManager dataManager;

@Autowired
private CustomIdService customIdService;

public static final String AREA_NAME = "华北市场";


public void importProvider(){
Workbook wb = null;
try {
//wb = WorkbookFactory.create(new File("G:/华东供应商.xls"));
wb = WorkbookFactory.create(new File("f:/东莞供应商.xls"));
Sheet sheet = wb.getSheetAt(0);
Row firstRow = sheet.getRow(0);
sheet.removeRow(firstRow);
int rowNum = 0;
for(Row row : sheet){
//int index = 0;
if(isBlankRow(row)){
int i = 0;
continue;
}
rowNum++;
if(rowNum >= 6){
int i = 0;
i = 9;
}
Provider provider = new Provider();
Linkman linkman = new Linkman();
LinkmanOrganization linkOrg = new LinkmanOrganization();
for(int index = row.getFirstCellNum();index < row.getLastCellNum();index++){
Cell cell = row.getCell(index);
if(cell == null || cell.getCellType() == Cell.CELL_TYPE_BLANK) continue;
try{
String val = null;
if(index == 16) {
int i = 0 ;
int b = i+1;
}

/* if(HSSFCell.CELL_TYPE_NUMERIC == cell.getCellType()){
if (HSSFDateUtil.isCellDateFormatted(cell)) {
try{
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
         Date dt = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());
         val = dateformat.format(dt);
//System.out.println(strdate);
}catch(Exception e){e.printStackTrace();}
}else{
cell.setCellType(Cell.CELL_TYPE_STRING);
val = cell.getStringCellValue();
}
}else{*/
cell.setCellType(Cell.CELL_TYPE_STRING);
val = cell.getStringCellValue();
//}
//RichTextString rich = cell.getRichStringCellValue();
//val = rich.getString();
switch (index) {
case 0:{//编号
String code = this.generateProviderCode(AREA_NAME);
provider.setCode(code);
break;
}
case 1:{//公司注册名称
provider.setRegisterCompany(val);
break;
}
case 2:{//法定代表人
provider.setLegalPerson(val);
break;
}
case 3:{//经营范围
provider.setBusinessScope(val);
break;
}
case 4:{//有效期限起
if(StringUtils.isBlank(val)){
break;
}
/*val = val.replaceAll("/", "-").replaceAll("\\.", "-");
try{
SimpleDateFormat format = new  SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(val);
Timestamp time = new Timestamp(date.getTime());
provider.setStartValidTime(time);
}catch(Exception e){e.printStackTrace();}*/

try{
double value = Double.parseDouble(val);
Date date = DateUtil.getJavaDate(value);
Timestamp time = new Timestamp(date.getTime());
provider.setStartValidTime(time);
}catch(Exception e){
e.printStackTrace();
/**
* 有可能时间格式 为2013.9.19
* 故在异常这里再格式化下时间再转
*/
val = val.replaceAll("/", "-").replaceAll("\\.", "-");
try{
SimpleDateFormat format = new  SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(val);
Timestamp time = new Timestamp(date.getTime());
provider.setStartValidTime(time);
}catch(Exception ex){ex.printStackTrace();}
}
break;
}
case 5:{//有效期限止
if(StringUtils.isBlank(val)){
break;
}
/*val = val.replaceAll("/", "-").replaceAll("\\.", "-");
try{
SimpleDateFormat format = new  SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(val);
Timestamp time = new Timestamp(date.getTime());
provider.setEndVdlidTime(time);
}catch(Exception e){e.printStackTrace();}*/
try{
double value = Double.parseDouble(val);
Date date = DateUtil.getJavaDate(value);
Timestamp time = new Timestamp(date.getTime());
provider.setEndVdlidTime(time);
}catch(Exception e){
e.printStackTrace();
/**
* 有可能时间格式 为2013.9.19
* 故在异常这里再格式化下时间再转
*/
val = val.replaceAll("/", "-").replaceAll("\\.", "-");
try{
SimpleDateFormat format = new  SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(val);
Timestamp time = new Timestamp(date.getTime());
provider.setEndVdlidTime(time);
}catch(Exception ex){ex.printStackTrace();}
}
break;
}
case 6:{//区域
//Entity entity = this.findOrg(val);
Entity entity = this.findOrg(AREA_NAME);
if(entity != null){
String orgId = (String) entity.get("id");
provider.setAreaId(orgId);
}
break;
}
case 7:{//证照全称
provider.setPermitName(val);
break;
}
case 8:{//证照号码
provider.setPermitNumber(val);
break;
}
case 9:{//证照地址
provider.setPermitAddress(val);
break;
}
case 10:{//负责人
provider.setPrincipal(val);
break;
}
case 11:{//发证机关
provider.setIssueOrgans(val);
break;
}
case 12:{//资质证书
//provider.setQualityCertificate(val);
if(StringUtils.isNotBlank(val)){
provider.setMark("资质证书:" + val);
}
break;
}
case 13:{//姓名
linkman.setName(val);
break;
}
case 14:{//电话
linkman.setPhone(val);
break;
}
case 15:{//邮箱
linkman.setEmail(val);
break;
}
case 16:{//地址
linkman.setAddress(val);
break;
}
case 17:{//相关餐厅
if(StringUtils.isNotBlank(val)){
Entity entity = this.findOrg(val.trim());
if(entity != null){
String orgId = (String) entity.get("id");
linkOrg.setOrgId(orgId);
}
}
break;
}
default:
break;
}

}catch(Exception e){
e.printStackTrace();
}
}
try{
this.saveProviderAndLinkman(provider, linkman, linkOrg);
}catch(Exception e){
e.printStackTrace();
}
}
} catch (InvalidFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

public void importProvider2(){

}

public void importPermit(){

Workbook wb = null;
try {
//wb = WorkbookFactory.create(new File("G:/华东供应商.xls"));
wb = WorkbookFactory.create(new File("G:/华北市场13年新店许可证信息统计.xls"));
Sheet sheet = wb.getSheetAt(0);
Row firstRow = sheet.getRow(0);
sheet.removeRow(firstRow);
int rowNum = 0;
for(Row row : sheet){
//int index = 0;
if(isBlankRow(row)){
int i = 0;
continue;
}
rowNum++;
if(rowNum >= 6){
int i = 0;
i = 9;
}

Permit permit = new Permit();
for(int index = row.getFirstCellNum();index < row.getLastCellNum();index++){
Cell cell = row.getCell(index);
if(cell == null || cell.getCellType() == Cell.CELL_TYPE_BLANK) continue;
try{
String val = null;
if(index == 16) {
int i = 0 ;
int b = i+1;
}
cell.setCellType(Cell.CELL_TYPE_STRING);
val = cell.getStringCellValue();
switch (index) {
case 0:{//序号
break;
}
case 1:{//区域
if(StringUtils.isNotBlank(val)){
Entity entity = this.findOrg(val.trim());
if(entity != null){
String orgId = (String) entity.get("id");
permit.setAreaId(orgId);
}
permit.setAreaId_text(val);
}

break;
}
case 2:{//餐厅编号
permit.setDinerCode(val);
break;
}
case 3:{//餐厅名称
permit.setDinerName(val);
break;
}
case 4:{//法人公司
permit.setLegalCompany(val);
break;
}
case 5:{//公司注册名称
permit.setRegisterCompany(val);
break;
}
case 6:{//证照全称
permit.setPermitName(val);
break;
}
case 7:{//证照号码
permit.setPermitNumber(val);
break;
}
case 8:{//地址或营业场所
permit.setAddress(val);
break;
}
case 9:{//法人代表
permit.setLegalDelegate(val);
break;
}
case 10:{//证照类型
permit.setPermitType(val);
break;
}
case 11:{//证可范围或者经营范围
permit.setBusinessScope(val);
break;
}
case 12:{//有效期起

if(StringUtils.isBlank(val)){
break;
}
try{
double value = Double.parseDouble(val);
Date date = DateUtil.getJavaDate(value);
Timestamp time = new Timestamp(date.getTime());
permit.setStartValidTime(time);
}catch(Exception e){
e.printStackTrace();
/**
* 有可能时间格式 为2013.9.19
* 故在异常这里再格式化下时间再转
**/
val = val.replaceAll("/", "-").replaceAll("\\.", "-");
try{
SimpleDateFormat format = new  SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(val);
Timestamp time = new Timestamp(date.getTime());
permit.setStartValidTime(time);
}catch(Exception ex){ex.printStackTrace();}
}
break;
}
case 13:{//有效期止
if(StringUtils.isBlank(val)){
break;
}
try{
double value = Double.parseDouble(val);
Date date = DateUtil.getJavaDate(value);
Timestamp time = new Timestamp(date.getTime());
permit.setEndValidTime(time);
}catch(Exception e){
e.printStackTrace();
/**
* 有可能时间格式 为2013.9.19
* 故在异常这里再格式化下时间再转
**/
val = val.replaceAll("/", "-").replaceAll("\\.", "-");
try{
SimpleDateFormat format = new  SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(val);
Timestamp time = new Timestamp(date.getTime());
permit.setEndValidTime(time);
}catch(Exception ex){ex.printStackTrace();}
}
break;
}
case 14:{//发证机关
permit.setIssueOrgans(val);
break;
}
case 15:{//证照状态
permit.setStatus(val);
break;
}

default:
break;
}

}catch(Exception e){
e.printStackTrace();
}
}
try{
this.savePermit(permit);
}catch(Exception e){
e.printStackTrace();
}
}

} catch (InvalidFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}


}

public Entity findOrg(String name){
Map<String,String> params = new HashMap<String,String>();
params.put("name", name);
Entity entity = this.dao.query("Organization", "name =: name",params).firstOrNull();
return entity;
}

/**
* 生成供应商编号
* @return
*/
public String generateProviderCode(String name){
String code = customIdService.generateCustomId("Provider");
Entity entity = this.findOrg(name);
String companyCode = "";
if(entity != null){
if(null != entity.get("orgNum")){
companyCode =  entity.get("orgNum").toString();
}
}
code = code.replace(":companyCode", companyCode);
return code;
}

@Transactional(propagation = Propagation.REQUIRED)
public void saveProviderAndLinkman(Provider provider,Linkman linkman,LinkmanOrganization linkOrg){
//保存供应商
String providerId  = UUID.randomUUID().toString();
provider.setId(providerId);
this.dataManager.insert("Provider", provider);
//保存联系人
linkman.setProviderId(providerId);
String linkmanId = UUID.randomUUID().toString();
this.dataManager.insert("Linkman", linkman);
//保存联系人与餐厅的关系
if(StringUtils.isNotBlank(linkOrg.getOrgId())){
linkOrg.setId(linkmanId);
this.dataManager.insert("LinkmanOrganization", linkOrg);
}
}

public void savePermit(Permit permit){
String permitId = UUID.randomUUID().toString();
permit.setId(permitId);
this.dataManager.insert("Permit", permit);
}

public  boolean isBlankRow(Row row){
        if(row == null) return true;
        for(int i = row.getFirstCellNum(); i < row.getLastCellNum(); i++){
        Cell cell = row.getCell(i);
        if(cell == null) continue;
            if(cell.getCellType() == Cell.CELL_TYPE_BLANK){
            }else{
            return false;
            }
        }
        return true;
    }


public static void main(String[] args) {
//String str = "2012/11/28";
/*String str = "2013/7/24";
str = str.replaceAll("/", "-");
System.out.println(str);
str = str.replaceAll("\\.", "-");
System.out.println(str);

SimpleDateFormat format = new  SimpleDateFormat("yyyy-MM-dd");
try {
Date date = new Date(); //format.parse(str);
date.setTime(41241);
System.out.println(date);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/

Date date = DateUtil.getJavaDate(40758.0);
System.out.println(date);


/* List<Map<String,Object>> list = this.dataManager.findAll("provider");
for(Map<String,Object> obj : list){
String id = obj.get("id").toString();
Map<String,Object> filds = new HashMap<String,Object>();
filds.put("qualityCertificate", null);
String qualityCertificate = obj.get("qualityCertificate") == null ? "" : obj.get("qualityCertificate").toString();
if(StringUtils.isNotBlank(qualityCertificate)){
filds.put("mark", "资质证书:" + qualityCertificate);
}
this.dataManager.update(Provider.class, id, filds);
}*/
}

}
分享到:
评论

相关推荐

    java_poi实现excel导入导出

    Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Excel 文件。在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java ...

    poi导入excel表需要的jar包

    在实际开发中,你可以通过以下步骤使用Apache POI来导入Excel数据: 1. **创建工作簿对象**:使用`WorkbookFactory.create()`方法,传入文件流或者文件路径来创建一个`Workbook`对象,代表整个Excel文件。 2. **...

    POI导入Excel并返回校验后的错误文件(原样)下载以及校验错误信息,同时加进度条

    POI导入Excel并返回校验后的错误文件(原样数据文件,并添加批注,注:由于批注只能加1000条,会在Excel后面添加一栏错误信息)下载以及页面展示校验错误信息,同时添加导入进度条,提供页面js和css代码,后端...

    Java 使用poi导入excel 并使用xml做数据验证

    在本项目中,我们结合了POI库和XML技术来实现Excel数据的验证与导入数据库。 首先,Apache POI提供了HSSF和XSSF两个API,分别用于处理老版本的BIFF8格式(.xls)和新版本的OOXML格式(.xlsx)。在这个案例中,我们...

    java_poi导入 excel

    这篇博文链接虽然没有提供具体内容,但我们可以根据“java_poi导入excel”这个主题深入探讨Java POI库在Excel导入方面的应用。 首先,Java POI 提供了HSSF(用于老版本的BIFF格式,如.xls)和XSSF(用于新版本的...

    Springboot+Poi实现Excel的导入导出

    2. **导入Excel**:读取本地Excel文件,解析Workbook,获取每个Sheet,再遍历Sheet中的Row和Cell。将读取到的数据转换为适合插入数据库的格式,通过MyBatis的SqlSession执行相应的INSERT语句,将数据存入MySQL数据库...

    POI实现Excel导入导出并附带加载进度条

    在导入Excel时,我们通常会创建一个Workbook对象,然后通过其工作表接口(Sheet)访问具体的单元格(Cell)。对于导出,我们需要创建一个新的Workbook,添加工作表,然后填充数据到相应的单元格中。 在描述中提到,...

    java_poi导入excel通用工具类

    这个"java_poi导入excel通用工具类"是利用Java的POI库和一些额外的技术来实现对Excel数据的导入功能,使得开发人员能够方便地将Excel数据转化为Java对象或者对已有对象进行填充。下面我们将深入探讨相关的知识点。 ...

    POI 导入Excel 提醒LeftoverDataException求帮助

    在提供的文件列表中,"POI 导入Excel 提醒LeftoverDataException求帮助 - J2SE.htm"可能是对问题的详细描述或解决方案,而"POI 导入Excel 提醒LeftoverDataException求帮助 - J2SE_files"可能包含了相关的代码示例或...

    java_poi导入excel通用工具类V0915

    "java_poi导入excel通用工具类V0915" 提供了一种通用的方式来处理Excel数据的导入工作,它支持多种赋值方式,包括单个对象、列表对象以及指定坐标的赋值。 首先,让我们深入理解一下这个工具类的主要功能: 1. **...

    poi导入导出Excel源码

    标题“poi导入导出Excel源码”和描述涉及到的核心知识点是利用Apache POI进行Excel文件的导入与导出操作。 首先,让我们详细了解Apache POI库。Apache POI是Apache软件基金会的一个开源项目,其主要目标是创建Java ...

    POI导入Excel表格数据小例子

    ### POI导入Excel表格数据小例子 #### 一、背景介绍 Apache POI 是一个用于读写 Microsoft Office 格式文件的 Java API,包括 Excel、Word 和 PowerPoint 等。本例通过 Apache POI 库将 Excel 文件中的数据导入到...

    基于POI的Excel多Sheet页导出导入工具类

    例如,你可以用它来生成自定义报告、从Excel文件批量导入数据库、或者将数据库中的数据导出到Excel供用户查看和编辑。 为了更好地使用这个工具类,开发者需要了解Apache POI的基本用法,理解Java反射机制,并熟悉...

    poi实现导入数据到excel模板

    poi实现导入数据到excel模板,本来想上传poi的jar包,谁知限制我只能上传15M的文件,汗。。。。。 不知道啥时候开始要分了... 代码见: https://github.com/thisisnohi/nohi-doc poi实现导入数据到excel模板。...

    poi导入导出excel生成报表

    ### POI 导入导出 Excel 生成报表详解 #### 一、概述 Apache POI 是一个用于读写 Microsoft Office 格式文件的 Java API,其中包括对 Excel 文件的支持。通过 POI,我们可以轻松地实现 Excel 文件的创建、读取、...

    基于poi的excel导入.doc

    "POI导入Excel知识点" POI简介 Apache POI是一个开源的Java库,用于处理Microsoft Office文档,包括Excel、Word、PowerPoint等。POI提供了一个纯Java的解决方案,用于读取、写入和操作Office文档。 POI中的Excel...

    POI导入excel大数据处理,支持excel2003,2007

    标题提到的“POI导入excel大数据处理”是指利用Apache POI进行大量Excel数据的导入操作,同时它兼容Excel 2003(.xls格式)和2007以上版本(.xlsx格式)的文件。 POI库的主要优点包括: 1. **多格式支持**:不仅...

    java 利用POI 导入导出Excel

    前几天项目上需要加上导入导出,在网上找了一下,么有...于是自己写,源码里所需要的jar都有,从jsp界面进行Excel的导入导出,并可用于上传和下载。如有所用,喜不自禁,分享,开源的意义。 写的不是特别好,不喜勿喷!

    java poi 导入大数据量Excel数据 防止内存溢出处理.zip

    Java中的Apache POI库是用于读取和...通过以上策略,可以有效地处理Java POI在导入大数据量Excel时的内存溢出问题,同时提高程序的运行效率。在实践中,应根据具体场景选择合适的优化方法,确保程序的稳定性和性能。

    SpringMvc+POI 导入Excel

    在导入Excel时,我们需要创建对应的Workbook对象,然后通过Sheet和Row接口遍历并读取数据。例如,可以使用`sheet.iterator().next()`获取第一个Sheet,再通过`rowIterator()`遍历所有行,最后通过`getCell()`获取...

Global site tag (gtag.js) - Google Analytics