package cn.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/**
* @function:excel导入的工具类
* @author: zhangchunping
* @email: zhangch_hk@163.com
* @createTime:Jun 7, 2012 10:04:09 AM
* @ModifyTime:Jun 7, 2012 10:04:09 AM
* @modifyUser:zhangchunping
* @modifyEmail:zhangch_hk@163.com
*/
public final class ExcelUtil {
public static int resultCode; // 返回的结果状态1成功,0失败
public static String resultMessage; // 返回的结果消息
//private static final String[] tables = new String[13];
static {
resultCode = 0;
resultMessage = "No Init";
}
public static List<De_InsurancecardSchema> importExecl(String path) {
if(null==path&&"".equals(path)){
resultCode = 0;
resultMessage = "HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format!";
return null;
}
String suffix=path.substring(path.lastIndexOf('.')+1,path.length()); //后缀
if(null==path&&"".equals(path)){
resultCode = 0;
resultMessage = " file suffix format no rigth!";
return null;
}
if(suffix.toUpperCase().equals("XLS")){ //97-2007(不包括2007)的
return readRequestExcel2003(path);
}else if(suffix.toUpperCase().equals("XLSX")){//包括2007的
return readRequestExcel2007(path);
}
return null;
}
public static List<De_InsurancecardSchema> readCancelRequestExcel2003(String path){
// 实例化集合对象
List<De_InsurancecardSchema> deInsurancecardSchemas = new ArrayList<De_InsurancecardSchema>();
// excel读取对象
HSSFWorkbook hb = null;
// 读入流对象
InputStream ins = null;
// 文件上传对象
De_InsurancecardSchema schema = null;
// 定义 row、cell
HSSFRow row;
String cell;
try {
// 导入文件
ins = new FileInputStream(new File(path));
hb = new HSSFWorkbook(ins);
HSSFSheet sheet = hb.getSheetAt(0); // 只是第一个sheet
// 根本就没有sheet
if (sheet != null) {
int lastRowNum = sheet.getPhysicalNumberOfRows(); // 总共有多少行数据
if (lastRowNum >1) {
//第二行开始
output: //行的开始
for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
row = sheet.getRow(i);
int rowNum = row.getRowNum(); // 行数
if(i>0){
schema = new De_InsurancecardSchema(); // 每次循环一行是都实例化一个scheme
//只有一列,所以等与1
for (int j = 0; j < 1; j++) {
if(row.getCell(j)!=null){
cell = row.getCell(j).toString();
}else{
cell = null;
}
int cellNum =j;
boolean flag = false;
switch (cellNum) {
case 0:// 保单号(必填)
if (cell != null && !"".equals(cell)) {
schema.setContNo(cell);
flag = true;
}
break;
}
if (!flag) {
resultCode = 0;
resultMessage = "第"+(rowNum+1)+"行的第"
+ (cellNum + 1) + "列 保单号的格式不正确!";
deInsurancecardSchemas = null;
break output; // 跳到最外面
}
}
if(null!=schema.getContNo()&&!"".equals(schema.getContNo())){
// 增加到集合里
deInsurancecardSchemas.add(schema);
resultCode = 1;
resultMessage = "上传成功!";
}else{
//数据的完整性不正确!
deInsurancecardSchemas=null;
resultCode = 0;
//当提示这里的时候,只能说明你的excel的最后一行或最后一列有编辑过,但是没有数据,选择右键删除最后一行或最后一列,就可以了
resultMessage = "请求保单号的数据完整性不正确!";
}
}
}
}else if(lastRowNum<=1){
resultCode = 0;
resultMessage = "Excel数据为空!";
deInsurancecardSchemas = null;
}
} else {
deInsurancecardSchemas = null;
resultCode = 0;
resultMessage = "导入的EXCEL为空!";
}
} catch (FileNotFoundException e) {
resultCode = 0;
resultMessage = e.getMessage();
deInsurancecardSchemas = null; // 出错了
} catch (IOException e) {
resultCode = 0;
resultMessage = e.getMessage();
deInsurancecardSchemas = null; // 出错了
} finally {
if (ins != null) {
try {
ins.close();
} catch (IOException e) {
resultCode = 0;
resultMessage = e.getMessage();
deInsurancecardSchemas = null; // 出错了
}
}
}
return deInsurancecardSchemas;
}
@SuppressWarnings("deprecation")
public static List<De_InsurancecardSchema> readCancelRequestExcel2007(
String path) {
// 实例化集合对象
List<De_InsurancecardSchema> deInsurancecardSchemas = new ArrayList<De_InsurancecardSchema>();
// 文件上传对象
De_InsurancecardSchema schema = null;
// 构造 XSSFWorkbook 对象,strPath 传入文件路径
XSSFWorkbook xwb;
// 定义 row、cell
XSSFRow row;
String cell;
try {
xwb = new XSSFWorkbook(path);
// 读取第一章表格内容 ,只是第一个sheet
XSSFSheet sheet = xwb.getSheetAt(0);
if (sheet != null) {
int lastRowNum = sheet.getPhysicalNumberOfRows(); // 总共有多少行数据
if (lastRowNum >1) {
//第二行开始
output: //行的开始
for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
row = sheet.getRow(i);
int rowNum = row.getRowNum(); // 行数
if(i>0){
schema = new De_InsurancecardSchema(); // 每次循环一行是都实例化一个scheme
for (int j = 0; j < 1; j++) {
if(row.getCell(j)!=null){
cell = row.getCell(j).toString();
}else{
cell = null;
}
int cellNum =j;
boolean flag = false;
switch (cellNum) {
case 0:// 保单号(必填)
if (cell != null && !"".equals(cell)) {
schema.setContNo(cell);
flag = true;
}
break;
}
if (!flag) {
resultCode = 0;
resultMessage = "第"+(rowNum+1)+"行的第"
+ (cellNum + 1) + "列 保单号的格式不正确!";
deInsurancecardSchemas = null;
break output; // 跳到最外面
}
}
if(null!=schema.getContNo()&&!"".equals(schema.getContNo())){
// 增加到集合里
deInsurancecardSchemas.add(schema);
resultCode = 1;
resultMessage = "上传成功!";
}else{
//数据的完整性不正确!
deInsurancecardSchemas=null;
resultCode = 0;
//当提示这里的时候,只能说明你的excel的最后一行或最后一列有编辑过,但是没有数据,选择右键删除最后一行或最后一列,就可以了
resultMessage = "请求保单号的数据完整性不正确!";
}
}
}
}else if(lastRowNum<=1){
resultCode = 0;
resultMessage = "Excel数据为空!";
deInsurancecardSchemas = null;
}
} else {
deInsurancecardSchemas = null;
resultCode = 0;
resultMessage = "导入的EXCEL为空!";
}
} catch (FileNotFoundException e) {
resultCode = 0;
resultMessage = e.getMessage();
deInsurancecardSchemas = null; // 出错了
} catch (IOException e) {
resultCode = 0;
resultMessage = e.getMessage();
deInsurancecardSchemas = null; // 出错了
} catch (UnsupportedOperationException e) {
resultCode = 0;
resultMessage = e.getMessage();
deInsurancecardSchemas = null; // java.lang.UnsupportedOperationException: Unknown Ptg in Formula: 0xffffffff (-1)
}catch (Exception e) {
resultCode = 0;
resultMessage = e.getMessage();
deInsurancecardSchemas = null; // 出错了
}
// 返回
return deInsurancecardSchemas;
}
public static void main(String[] args) {
cancelTest2003();
cancelTest2007();
}
public static void cancelTest2003(){
String f="C:\\Users\\Administrator\\Desktop\\cancelRequest-templet.xls";
List<De_InsurancecardSchema> lists=ExcelUtil.readCancelRequestExcel2003(f);
if(lists!=null)
for(De_InsurancecardSchema schema:lists){
System.out.println(schema.toString());
}
System.out.println(ExcelUtil.resultCode+"\t"+ExcelUtil.resultMessage);
}
public static void cancelTest2007(){
String f="C:\\Users\\Administrator\\Desktop\\cancelRequest-templet-2007.xlsx";
List<De_InsurancecardSchema> lists=ExcelUtil.readCancelRequestExcel2007(f);
if(lists!=null)
for(De_InsurancecardSchema schema:lists){
System.out.println(schema.toString());
}
System.out.println(ExcelUtil.resultCode+"\t"+ExcelUtil.resultMessage);
}
}
poi3.8的下载地址 http://poi.apache.org/download.html
分享到:
相关推荐
本学习笔记将深入探讨如何使用Apache POI库来实现Java对Excel的高效操作。 Apache POI是一个开源项目,提供了读写Microsoft Office格式文档的能力,包括Excel(.xlsx和.xls)。在Java中,我们可以借助POI库来创建、...
首先,我们将要讲述的是easypoi这一Java库在处理Excel表格导入导出功能的应用。在Java开发中,对于数据的导入导出,尤其是Excel表格,是一种非常常见的需求。而easypoi为我们提供了简洁的方式来实现这一功能。 ### ...
- 实现批量导入功能通常涉及读取Excel数据,将数据转化为Java对象,然后保存到数据库或显示在页面上。这里可能用到了Apache POI库或其他类似工具来处理Excel文件。 8. **接口调用**: - 终端抵扣券兑换可能涉及到...
Java程序员可以通过Apache POI等库与Excel交互,实现自动化报告、数据导入导出等功能。学习如何高效使用Excel公式、图表、数据透视表等特性,将有助于提升工作效率。 6. **Java学习笔记**:个人的学习笔记通常包含...
本笔记将介绍如何使用POI来导入和导出Excel文件。 首先,我们需要将`poi-3.1-FINAL.jar`库添加到项目的类路径中,这样才能使用POI提供的API。导入这个库后,我们就可以开始编写处理Excel文件的代码了。 在示例代码...
- `HSSFSheet`:用于创建Excel工作表对象。 - `HSSFRow`:用于创建行对象。 - `HSSFCellStyle`:用于设置单元格样式。 - `setFilename`:用于设置Excel文件名。 - `getInputStream`:返回一个`InputStream`对象...
一,Java后台技术选型: ...网页后台,mysql数据库,Java和springboot,含管理后台,excel的导入和导出。 扫码点餐,我的订单,用户注册,排号等位,菜品列表,菜品搜索等功能。 四,包含部署视频和配套笔记
Excel数据的批量导入与导出 二,小程序端技术选型 原生微信小程序 css3 JavaScript 三,Java后台技术点 管理后台 后台登录 饭店管理员 菜品类目 excel批量导入与导出 菜品管理 菜品批量导入与导出 订单管理 饭店...
3. **test.xls**:可能是测试用例,用Excel格式存储,用于检验程序的某些功能,如课程表的导入导出。 4. **TEST-calendar_summer.LocalAddCourseTest.xml**:课程数据的测试文件,用于测试导入和导出功能。 5. **...
在Java开发中,处理Excel文件是一个常见的需求,比如数据导入导出、报表生成等。JXL库作为一个轻量级的Java Excel API,为开发者提供了方便快捷的方式来读写Excel文件。本篇笔记将深入探讨JXL库的使用方法和核心功能...
本课程将给大家分享如何基于SSM实现POI导入导出Excel,并讲解目前企业级JavaWeb应用mvc三层模式的开发流程,可让初学者或者职场萌新掌握如何基于SSM整合第三方框架并采用mvc三层开发模式实现自己的业务模块!
matlab导入excel代码 WithBeingIT Java、Notes 用过纸质笔记本,用过本地文件,用过oneNote,用过有道云笔记。除了有道云笔记,均因维护不善而不了了之 后知后觉:目前认为,最适合做体系笔记的是Github 云端 活跃的...
在Java中使用POI进行Excel操作,首先需要导入必要的包: ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache....
当需要将Excel表中的信息录入到网站数据库时,EasyExcel提供了强大的功能。你可以定义一个监听器(Listener),该监听器会在读取每个行时被调用。读取Excel时,EasyExcel会将每一行的数据映射到你之前定义的Java...
标题中的“Matlab系列--Python,R,VBA,Java,Matlab,Go等语言基本语法学习笔记以及代码.zip”表明这是一个包含多种编程语言基础语法的学习资料集合。这些语言包括Matlab、Python、R、VBA、Java和Go,它们在信息技术...
在"POI导出Excel笔记"的博客中,可能会详细讲解以下关键知识点: 1. **初始化工作簿**:首先,你需要创建一个Workbook对象,这可以是XSSFWorkbook(用于.xlsx格式,属于新的OOXML格式)或HSSFWorkbook(用于.xls...
2. 多格式支持:有道笔记不仅支持文本笔记,还能导入和编辑PDF、Word、Excel等多种格式的文件,使得信息整合更加灵活。 3. 剪辑网页:其网页剪辑插件能保存整个网页内容,包括文字、图片和布局,方便后续查阅和研究...
- 使用Apache POI或jxl库处理Excel数据的导入导出,通过fieldMap参数连接实体类与Excel列头,实现数据的映射。 - 导出可以指定到本地文件或浏览器,导入选项可自定义,如工作表大小、唯一性检查等。 5. **代码...
- **功能描述**:提供基于模板的代码生成器,可以根据数据库表结构自动生成相关代码(如CRUD操作、Excel导入导出、树形结构、字典生成等)。 - **关键特性**:自动化代码生成、支持多种代码模板、提高开发效率。 ...