package com.ceshi;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
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.poifs.filesystem.POIFSFileSystem;
public class DomExcel {
/**
* 解析EXCLE
* @param is
* @return
*/
public static List<String[]> parseExcel(FileInputStream is){
List<String[]> list = null ;
try {
POIFSFileSystem fs = new POIFSFileSystem(is);
// 创建工作簿
HSSFWorkbook workBook = new HSSFWorkbook(fs);
//储存Excle的数据
list = new ArrayList<String[]>();
// 获得Excel中工作表个数
//System.out.println("工作表个数 :" + workBook.getNumberOfSheets());
for (int i = 0; i < workBook.getNumberOfSheets(); i++) {
//System.out.println("第" + i + "个工作表名称:" + workBook.getSheetName(i));
// 创建工作表
HSSFSheet sheet = workBook.getSheetAt(i);
int rows = sheet.getPhysicalNumberOfRows(); // 获得行数
if (rows > 0) {
sheet.getMargin(HSSFSheet.TopMargin);
for (int j = 0; j < rows; j++) { // 行循环
HSSFRow row = sheet.getRow(j);
if (row != null) {
int cells = row.getLastCellNum(); // 获得列数
String[] fieldValue = new String[cells];
for (short k = 0; k < cells; k++) { // 列循环
HSSFCell cell = row.getCell(k);
String value = "";
if (cell != null) {
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC: // 数值型
if (HSSFDateUtil.isCellDateFormatted(cell)) {
// 如果是date类型则,获取该cell的date值
value = HSSFDateUtil.getJavaDate(cell.getNumericCellValue()).toString();
} else {
// 纯数字
value = String.valueOf(cell.getNumericCellValue());
}
break;
//此行表示单元格的内容为string类型
case HSSFCell.CELL_TYPE_STRING:
// 字符串型
value = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_FORMULA:// 公式型
// 读公式计算值
value = String.valueOf(cell.getNumericCellValue());
if (value.equals("NaN")) {
// 如果获取的数据值为非法值,则转换为获取字符串
value = cell.getStringCellValue();
}
break;
case HSSFCell.CELL_TYPE_BOOLEAN:// 布尔
value = ""+ cell.getBooleanCellValue();
break;
//此行表示该单元格值为空
case HSSFCell.CELL_TYPE_BLANK: // 空值
value = "";
break;
case HSSFCell.CELL_TYPE_ERROR: // 故障
value = "";
break;
default:
value = cell.getStringCellValue();
}
}
fieldValue[k] = value;
}
list.add(fieldValue);
}
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return list;
}
}
分享到:
相关推荐
通过Java Poi 解析EXCEL数据,内附实现代码,绝对可以用。要分不为别的,只为能给个评论。
使用poi解析excel文件,并将数据写入到数据库 项目说明 这个项目实现的功能是读取excel文件中的数据,解析并写入数据库。 读取的excel文件位于项目目录下的 excel\0805.xlsx 使用IntelliJ IDEA开发此项目 使用MYSQL...
通过poi解析Excel示例
java技术,利用工具类poi解析Excel文档示例
Java用poi读取excel文件Java用poi读取excel文件Java用poi读取excel文件
利用 Apache POI 对 excel 操作并存入MySQL数据库的一个小demo。
JAVA POI Excel转Html,代码和所需的jar都在压缩包,项目在线预览需求,实现后分享下
采用poi3.8解析excel文件,内含实例代码和jar包
apache poi解析Excel时报错,我将Excel打开后保存,就不会报错,我将重写的类从新打包这样问题虽然网上有解决方案,但是需要自己打包重写对应类,我已将这些步骤做好了。
一个解单的java工程,利用poi解析excel.下载代码直接可以运行。
POI java解析EXCEL框架 jar
Java使用poi的jar包解析excel,里面有个ExcelUtil工具类, 非常实用,里面有main函数可以测试,导入到eclipse里面就可以运行, 有测试excel文件,需要的jar都在里面, 导入就可以运行.
1.不分版本,2003/2007完美解析 2.调用方便 3.输出直观 4.解析excel工程demo
Java POI解析Excel2007,最新POI发布包(卷1) ,如何应用可参考我上传的另外一个资源(Excel2007小工具) 另外一卷:http://download.csdn.net/source/2421629
大家都知道用Jave解析Excel要用到POI的jar包,但是在POI版本是5.0.0的时候,用到的jar包不止是一个poi的包,用到了8个jar包,少一个项目都会报找不到类的错,运行不起来,这个压缩包的里面的jar直接全部复制拿去用
自己写的一个poi解析excel 的工具类。里面有些实用的方法,满足基本的解析要求了。
附件包含一个web项目,是一个简单的解析excel和word的例子,项目中包含jar poi解析excel、word2007,2010等版本
jar
poi解析excel用到的jar包 java解析excel用到的jar包 压缩包中包含: poi-3.7.jar poi-ooxml-3.7.jar poi-ooxml-schemas-3.7.jar
使用java或android语言解析Excel数据时,通常采用poi的jar包进行解析,当前Apache最近的jar包是3.17,但有时版本过高导致出错,所以也附上poi-3.10的jar包