java poi reader


public class ImportExcel {

private static Logger log = LoggerFactory.getLogger(ImportExcel.class);

/**
* 工作薄对象
**/
private Workbook wb;

/**
* 工作表对象
**/
private Sheet sheet;

/**
* 标题行号
*/
private int headerNum;

/**
* 构造函数
* @param path 导入文件,读取第1个工作表
* @param headerNum 标题行号,数据行等于标题行号+1
* @throws InvalidFormatException
* @throws IOException
*/
public ImportExcel(String fileName, int headerNum)
throws InvalidFormatException, IOException {
this(new File(fileName), headerNum);
}

/**
* 构造函数
* @param path 导入文件对象,读取第1个工作表
* @param headerNum 标题行号,数据行等于标题行号+1
* @throws InvalidFormatException
* @throws IOException
*/
public ImportExcel(File file, int headerNum)
throws InvalidFormatException, IOException {
this(file, headerNum, 0);
}

/**
* 构造函数
* @param path 导入文件
* @param headerNum 标题行号,数据行等于标题行号+1
* @param sheetIndex 工作表编号,以0开始
* @throws InvalidFormatException
* @throws IOException
*/
public ImportExcel(String fileName, int headerNum, int sheetIndex)
throws InvalidFormatException, IOException {
this(new File(fileName), headerNum, sheetIndex);
}

/**
* 构造函数
* @param path 导入文件对象
* @param headerNum 标题行号,数据行等于标题行号+1
* @param sheetIndex 工作表编号,以0开始、
* @throws InvalidFormatException
* @throws IOException
*/
public ImportExcel(File file, int headerNum, int sheetIndex)
throws InvalidFormatException, IOException {
this(file.getName(), new FileInputStream(file), headerNum, sheetIndex);
}

/**
* 构造函数
* @param file 导入文件对象
* @param headerNum 标题行号,数据行等于标题行号+1
* @param sheetIndex 工作表编号,以0开始、
* @throws InvalidFormatException
* @throws IOException
*/

/**
* 构造函数
* @param path 导入文件对象
* @param headerNum 标题行号,数据行等于标题行号+1
* @param sheetIndex 工作表编号,以0开始、
* @throws InvalidFormatException
* @throws IOException
*/
public ImportExcel(String fileName, InputStream is, int headerNum, int sheetIndex)
throws InvalidFormatException, IOException {
if (StringUtils.isBlank(fileName)){
throw new RuntimeException("导入文档为空!");
}else if(fileName.toLowerCase().endsWith("xls")){
this.wb = new HSSFWorkbook(is);
}else if(fileName.toLowerCase().endsWith("xlsx")){
this.wb = new XSSFWorkbook(is);
}else{
throw new RuntimeException("文档格式不正确?");
}
if (this.wb.getNumberOfSheets()<sheetIndex){
throw new RuntimeException("文档中没有工作表!");
}
this.sheet = this.wb.getSheetAt(sheetIndex);
this.headerNum = headerNum;
log.debug("Initialize success.");
}

/**
* 获取行对象
* @param rownum
* @return
*/
public Row getRow(int rownum){
return this.sheet.getRow(rownum);
}

/**
* 获取数据行号
* @return
*/
public int getDataRowNum(){
return headerNum+1;
}

/**
* 获取工作表中的最后一行的行号,以0开始
* @return
*/
public int getLastDataRowNum(){
return this.sheet.getLastRowNum();
}

/**
* 获取一行记录总的列数
* @return
*/
public int getLastCellNum(){
return this.getRow(headerNum).getLastCellNum();
}

/**
* 获取单元格的值
* @param row 获取的行
* @param column 获取单元格列号
* @return 单元格的值
*/
public Object getCellValue(Row row, int column){
Object val = "";
try{
Cell cell = row.getCell(column);
if (cell != null){
if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC){
val = cell.getNumericCellValue();
}else if (cell.getCellType() == Cell.CELL_TYPE_STRING){
val = cell.getStringCellValue();
}else if (cell.getCellType() == Cell.CELL_TYPE_FORMULA){
val = cell.getCellFormula();
}else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN){
val = cell.getBooleanCellValue();
}else if (cell.getCellType() == Cell.CELL_TYPE_ERROR){
val = cell.getErrorCellValue();
}
}
}catch (Exception e) {
return val;
}
return val;
}
/**
* 导入测试
*/
public static void main(String[] args) throws Throwable {
ImportExcel ei = new ImportExcel("import.xls", 0);
System.out.println(ei.getLastDataRowNum());
System.out.println(ei.getDataRowNum());

for (int i = ei.getDataRowNum(); i <= ei.getLastDataRowNum(); i++) {
Row row = ei.getRow(i);
System.out.println("Row num:"+i);
for (int j = 0; j < ei.getLastCellNum(); j++) {
Object val = ei.getCellValue(row, j);
System.out.print(val+", ");
}
System.out.print("\n");
}

}

}

java poi reader

时间: 2024-10-11 16:01:37

java poi reader的相关文章

Java IO: Reader和Writer

作者: Jakob Jenkov 译者: 李璟([email protected]) Reader 原文链接 Reader是Java IO中所有Reader的基类.Reader与InputStream类似,不同点在于,Reader基于字符而非基于字节.换句话说,Reader用于读取文本,而InputStream用于读取原始字节. 请记住,Java内部使用UTF8编码表示字符串.输入流中一个字节可能并不等同于一个UTF8字符.如果你从输入流中以字节为单位读取UTF8编码的文本,并且尝试将读取到的字

java POI实现向Excel中插入图片

java POI实现向Excel中插入图片 标签: javapoiexcel 2014-03-05 08:59 9103人阅读 评论(4) 收藏 举报  分类: [JAVA开发]-----JavaScore(34)  版权声明:本文为博主原创文章,未经博主允许不得转载. 做Web开发免不了要与Excel打交道.今天老大给我一个任务-导出Excel.开始想的还是蛮简单的,无非就是查找,构建Excel,response下载即可.但是有一点不同,就是要加入图片,就是这个加入图片搞了好久.同时网络上确实

java输入流[Reader,InputStream] 不带缓冲效果的基本流操作。以及中文乱码情况

Reader,InputStream用来读取资源的内容,资源可以是文件或者网络 首先有一个txt文件,文件中的内容如下 File f = new File("文件路径"); FileInputStream fis = new FileInputStream(f);//创建一个输入流,读取f中的内容到程序中来 //System.out.println(fis.read()); byte[] b = new byte[1024];//定义一个数组,保存读取的类容 int hasRead =

Java IO: Reader And Writer

原文链接 作者: Jakob Jenkov  译者: 李璟([email protected]) Java IO的Reader和Writer除了基于字符之外,其他方面都与InputStream和OutputStream非常类似.他们被用于读写文本.InputStream和OutputStream是基于字节的,还记得吗? Reader Reader类是Java IO中所有Reader的基类.子类包括BufferedReader,PushbackReader,InputStreamReader,St

【java】io流之字符输入流:java.io.Reader类及子类的子类java.io.FileReader

1 package 文件操作; 2 3 import java.io.File; 4 import java.io.FileReader; 5 import java.io.IOException; 6 import java.io.Reader; 7 8 public class TestReader { 9 public static void main(String[] args) throws IOException { 10 File file=new File("D:"+F

java 使用Reader和Writer对文件内容的拷贝

package com.hc.fileio; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.io.Writer; /**对文件内容的拷贝 * @author MaskedMen *Reader和Writer只能读写字符流 */ public class ReaderWr

Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框

在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下.(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^) 呵呵,首先我们来导出EXCEL格式的文件吧.现在主流的操作Excel文件的开源工具有很多,用得比较多的就是Apache的POI及JExcelAPI.这里我们用Apache POI!我们先去Apach

使用Java POI来选择提取Word文档中的表格信息

通过使用Java POI来提取Word(1992)文档中的表格信息,其中POI支持不同的ms文档类型,在具体操作中需要注意.本文主要是通过POI来提取微软2003文档中的表格信息,具体code如下(事先需要导入POI的jar包): public static void testWord2() { try { FileInputStream in = new FileInputStream("july 2005 1.doc");// 载入文档 // FileInputStream in

java poi操作excel 添加 锁定单元格保护

Excel的book保护是很常用的,主要是不想让别人修改Excel的时候用.这样能够避免恶意随便修改数据,提高数据的可信度. 下面介绍JAVA POI来实现设置book保护: 使用HSSFSheet类的protectSheet(password)方法就可以了. 具体代码如下: package com.util; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFCell; import org.ap