`
天空之城
  • 浏览: 404920 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

poi操作Excel

    博客分类:
  • Java
阅读更多
package com.demo.poi;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
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.poifs.filesystem.POIFSFileSystem;
/**
*  poi读取Excel表数据
* @author
* 2008-11-11
*/
public class ExcelRead {

private HSSFWorkbook wb = null;

private HSSFSheet sheet = null;

private HSSFRow row = null;

private HSSFCell cell = null;

private FileInputStream fis = null;
   //属性
private int sheetNum = 0;

private int rowNum = 0;

private File file = null;


// 有参数的构造函数
public ExcelRead(File file) {
this.file = file;
}

public void setFile(File file) {
this.file = file;
}

public void setRowNum(int rowNum) {
this.rowNum = rowNum;
}

public void setSheetNum(int sheetNum) {
this.sheetNum = sheetNum;
}

/**
* 读取excel文件获得HSSFWorkbook对象
*/
public void open() {
try {
fis = new FileInputStream(file);
try {
wb = new HSSFWorkbook(new POIFSFileSystem(fis));
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("IO异常!!");
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("没有找到相应的文件!!");
e.printStackTrace();
}
}

/**
* 返回sheet表个数
* @return
*/
public int getSheetCount() {
int sheetCount = -1;
sheetCount = wb.getNumberOfSheets();
System.out.println("sheet表的个数"+sheetCount);
return sheetCount;
}
/**
* 返回sheet表下的记录
*
* @return
*/
public int getRowNumber() {
int rowNum = -1;
if (wb == null)
System.out.println("WB为NULL");
HSSFSheet sheet = wb.getSheetAt(this.sheetNum);
rowNum = sheet.getLastRowNum();
    return rowNum;
}
/**
* 返回指定sheet表的记录[重构]
*
* @param sheetNum
* @return
*/
public int getRowNumber(int sheetNum) {
HSSFSheet sheet = wb.getSheetAt(sheetNum);
  int rowCount = -1;
rowCount = sheet.getLastRowNum();
System.out.println(sheetNum+"表的行数为:"+rowCount);
return rowCount;
}
/**
* 得到指定行的所有的内容
* @param lineNum
* @return
*/
  public String[] readExcelLine(int lineNum) {
  return readExcelLine(this.sheetNum, lineNum);
}
/**
* 读取指定列的值[]
*
* @param cellNum
* @return
*/
  public String readStringExcelCell(int cellNum) {

return readStringExcel(this.rowNum, cellNum);
}
/**
* 读取指定行和列编号的内容
*
* @param rowNum
* @param cellNum
* @return
*/
public String readStringExcel(int rowNum, int cellNum) {

return readStringExcelCell(this.sheetNum, rowNum, cellNum);
}
/**
* 得到指定工作表和行的内容
*
* @param sheetNum
* @param lineLine
* @return
*/
public String[] readExcelLine(int sheetNum, int lineNum) {
if (sheetNum < 0 || lineNum < 0)
return null;
String[] strExcel = null;
sheet = wb.getSheetAt(sheetNum);
row = sheet.getRow(lineNum);
int cellCount = row.getLastCellNum();//获得列数
strExcel = new String[cellCount-1];
for (int i = 0; i < cellCount-1; i++) {
strExcel[i] = readStringExcel(lineNum,i);
}
return strExcel;
}

/**[重构]
* 得到指定工作表、行、列下的内容
*
* @param sheetNum
* @param rowNum
* @param cellNum
* @return
*/
public String readStringExcelCell(int sheetNum, int rowNum, int cellNum)
{
if (sheetNum < 0 || rowNum < 0) {
return "";
}
String strExcel = "";
try {
sheet = wb.getSheetAt(sheetNum);
row = sheet.getRow(rowNum);
if (row.getCell((short) cellNum) != null) {
switch (row.getCell((short) cellNum).getCellType()) {
case HSSFCell.CELL_TYPE_FORMULA:
strExcel = "FORMULA";
break;
case HSSFCell.CELL_TYPE_NUMERIC:
strExcel = String.valueOf(row.getCell((short) cellNum)
.getNumericCellValue());
break;
case HSSFCell.CELL_TYPE_STRING:
strExcel = row.getCell((short) cellNum).getStringCellValue();
break;
case HSSFCell.CELL_TYPE_BLANK:
strExcel = "";
break;
default:
strExcel = "";
break;
}
}

} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return strExcel;
}
/**
* 测试
* @param args
*/
public static void main(String[] args) {

File file = new File("f://lpc1.xls");
ExcelRead read = new ExcelRead(file);
try {
read.open();
} catch (Exception e) {
e.printStackTrace();// TODO: handle exception
}
read.setSheetNum(0);
int count = read.getRowNumber();
System.out.println("行数"+count);
for(int i=0;i<count;i++)
{
String[] rows=read.readExcelLine(i);
for(int j=0;j<rows.length;j++)
{
System.out.print(rows[j]+"\t");
    }
             System.out.println();
   }
//System.out.println(read.readStringExcel(4, 2));
}
}

//*************************poi WriteExcel******************

package com.demo.poi;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Calendar;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
* 生成导出Excel文件对象
* @author
* 2008-11-10
*/
public class ExcelWriter {
  // 设置cell编码解决中文高位字节截断
private static short XLS_ENCODING = HSSFCell.ENCODING_UTF_16;
     //定制浮点数格式
private static String NUMBER_FORMAT = "#,##0.00";
// 定制日期格式
private static String DATE_FORMAT = "m/d/yy"; // "m/d/yy h:mm"  
    private OutputStream out=null;
    private HSSFWorkbook workbook=null;
    private HSSFSheet sheet=null;
    private HSSFRow row=null;
    //初始化ExcelWriter 
    public ExcelWriter(OutputStream out)
    {
    this.out=out;
    this.workbook=new HSSFWorkbook();
    this.sheet=workbook.createSheet(); 
    }
    /**
     * 导出Excel 文件
     */
     public void export()
     {
         try {
workbook.write(out);
out.flush();
out.close();
  } catch (IOException e) {
// TODO Auto-generated catch block
  System.out.println("写入Excel文件异常");
e.printStackTrace();
}  
     }
     /**
      * 增加一行
      * @param index行号
      */
    public void createRow(int index)
    {
    this.row=this.sheet.createRow(index);
   
    }
    /**
     * 获取单元格的值
     * @param index 列号
     * @return
     */
    public String getCell(int index)
    {
    HSSFCell cell=this.row.createCell((short)index);
    String strExcelCell = "";
    if(cell!=null)
    {
    switch(cell.getCellType())
    {
       case HSSFCell.CELL_TYPE_NUMERIC: strExcelCell=String.valueOf(cell.getNumericCellValue());
           break;
       case HSSFCell.CELL_TYPE_FORMULA : strExcelCell="FORMULA ";
           break;
       case HSSFCell.CELL_TYPE_STRING :strExcelCell=cell.getStringCellValue();
         break;
       case HSSFCell.CELL_TYPE_BOOLEAN : strExcelCell=String.valueOf(cell.getBooleanCellValue());
         break;
         default:strExcelCell="";
          break;
    }
    }
    return strExcelCell; 
    }
    /**
     * 设置单元格[int类型]
     * HSSFCell.CELL_TYPE_NUMERIC
     * @param index 行号
     * @param value 值
     */
    public void setCell(int index,int value)
    {
    HSSFCell cell=this.row.createCell((short)index);
         cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
         cell.setCellValue(value);
    }
    /**重构
     * 设置单元格
     * @param index
     * @param value
     */
    public void setCell(int index,double value)
    {
    HSSFCell cell=this.row.createCell((short)index);
    cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
    cell.setCellValue(value);
    HSSFCellStyle cellStyle = workbook.createCellStyle(); // 建立新的cell样式
        HSSFDataFormat format=workbook.createDataFormat();
        cellStyle.setDataFormat(format.getFormat(NUMBER_FORMAT));// 设置cell样式为定制的浮点数格式
        cell.setCellStyle(cellStyle); // 设置该cell浮点数的显示格式        
    }
    /**
     *
     * 设置单元格[String类型]
     * @param index
     * @param value
     */
    public void setCell(int index,String value)
    {
    HSSFCell cell=this.row.createCell((short)index);
    cell.setCellType(HSSFCell.CELL_TYPE_STRING);
    //cell.setEncoding(XLS_ENCODING);
    cell.setCellValue(value);
    }
   /**
    * 设置单元格[Calendar]
    * @param index
    * @param value
    */
      public void setCell(int index,Calendar  value)
      {
      HSSFCell cell=row.createCell((short)index);
      cell.setEncoding(XLS_ENCODING);
      cell.setCellValue(value.getTime());
      HSSFCellStyle cellStyle=workbook.createCellStyle();// 建立新的cell样式
          cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat(DATE_FORMAT));
      cell.setCellStyle(cellStyle);
      }  
      /**
       * 测试
       */
      public static void main(String[] args)
      {
      ExcelWriter e=null;
    System.out.println("开始导出Excel");
    File file=new File("f:\\qt.xls");   
    try {
      e=new ExcelWriter(new FileOutputStream(file));
      e.createRow(0);
      e.setCell(0, "试题编码 ");
      e.setCell(1, "题型");
      e.setCell(2, "分值");
      e.setCell(3, "难度");
      e.setCell(4, "级别");
      e.setCell(5, "知识点");
      e.createRow(1);
      e.setCell(0, "t1");
      e.setCell(1, 1);
      e.setCell(2, 3.0);
      e.setCell(3, 1);
      e.setCell(4, "重要");
      e.setCell(5, "专业"); 
} catch (Exception exs) {
// TODO: handle exception
exs.printStackTrace();
}
try{
  e.export();
System.out.println("导出成功");
    } catch (Exception ex) {
// TODO: handle exception
ex.printStackTrace();
}   
      }
}

  • Poi.rar (1.5 MB)
  • 描述: poi jar包
  • 下载次数: 41
分享到:
评论

相关推荐

    poi 操作excel案例 直接运行 适合参考

    标题中的“poi操作excel案例”指的是使用Apache POI库来处理Excel文件的示例项目。Apache POI是一个开源的Java库,它允许开发者创建、修改和显示Microsoft Office格式的文件,包括Excel工作簿(XLS和XLSX)。在这个...

    POI操作Excel常用方法总结

    这篇博客文章“POI操作Excel常用方法总结”可能详细介绍了如何利用Apache POI库在Java环境中读写Excel文件。以下是对该主题的一些关键知识点的详细说明: 1. **Apache POI介绍**: Apache POI是开源项目,提供了...

    poi操作excel所需完整jar包

    "poi操作excel所需完整jar包"指的是包含了所有必要组件的Apache POI库,这样在导入IDE并添加到构建路径后,就可以避免出现`NoClassDefFoundError`这样的运行时错误。 Apache POI 提供了丰富的API,允许开发者读取、...

    POI生成Excel POI操作Excel POI读取Excel POI类库

    Apache POI是一个强大的Java库,专门用于处理...通过lib.rar和Poi02.rar中的示例代码,你可以更深入地了解和学习POI操作Excel的具体实现。在实践中,结合这些资源,你将能够熟练地在Java Web项目中集成Excel处理功能。

    java 通过poi操作excel jar包

    标题中的"java通过poi操作excel jar包"指的是使用Apache POI库来处理Excel文件的Java程序,通常需要引入特定版本的POI JAR包。在这个案例中,我们有两个版本的JAR包可供使用:poi_3.17.jar和poi_3.15.jar。这些版本...

    poi操作excel表格导入和导出

    在“poi操作excel表格导入和导出”这个主题中,我们将深入探讨如何利用Apache POI进行Excel数据的处理,包括导入和导出。 一、Apache POI简介 Apache POI是一个开源项目,它提供了API来处理Microsoft Office格式的...

    poi操作excel的Demo

    这个"poi操作excel的Demo"很可能是提供了一个使用Apache POI库来读取、写入或修改Excel文件的示例代码。下面将详细介绍Apache POI在处理Excel时的一些关键知识点。 1. **Apache POI概述**: Apache POI 是Java平台...

    POI操作Excel的封装

    在这个场景中,"POI操作Excel的封装"指的是对POI API进行的高级抽象和简化,以便于开发人员更方便地处理Excel文件。通过反射和约定,可以创建一个易于使用的API,隐藏底层复杂的POI细节。 反射是Java编程语言中的一...

    Java Poi 操作excel的API 好用

    二、Java POI操作Excel的核心功能 1. 创建新的Excel工作簿 使用`WorkbookFactory.create()`方法可以创建一个新的Excel工作簿对象,然后通过工作簿对象创建工作表。 2. 读取Excel工作簿 同样,使用`WorkbookFactory....

    poi操作excel所需jar包及poi源码

    poi操作excel所需jar包及poi源码 包含内容 poi-3.7.jar poi-ooxml-3.7.jar poi-ooxml-schemas-3.7.jar poi-scratchpad-3.7.jar Lib--&gt;commons-logging-1.1.jar lib--&gt;junit-3.8.1.jar lib--&gt;log4j.1.2.13.jar ooxml-...

    poi操作Excel文件jar包

    "poi操作Excel文件jar包"指的是包含Apache POI库的Java归档(JAR)文件,可以集成到Java项目中以实现Excel文件的处理功能。 1. **Apache POI 简介** Apache POI 是Apache软件基金会的一个顶级项目,最初由Markus ...

    poi操作excel2007

    接下来,我们将讨论如何使用Apache POI操作Excel 2007(.xlsx)文件的主要步骤: 1. **创建Workbook对象**:这是Excel工作簿的Java表示。你可以使用`XSSFWorkbook`类来创建一个新的Excel工作簿。 ```java import...

    POI操作excel的 JAR包

    这个“POI操作excel的JAR包”是Apache POI项目的一部分,它提供了一系列API,使得Java开发者可以方便地创建、读取、修改Excel电子表格。 在Java开发中,使用Apache POI库可以实现以下功能: 1. **创建Excel工作簿*...

    poi操作excel全部jar包

    "poi操作excel全部jar包"指的是使用Apache POI进行Excel操作所需的所有库文件集合,通常包含多个JAR文件,每个文件服务于不同的功能模块。 Apache POI 主要分为三个部分: 1. **HSSF**: 这是处理Microsoft Excel的...

    java poi操作excel批量导入导出项目需要的jar包

    Java中的Apache POI库是处理...以上是Java POI操作Excel的基本概念和关键点,理解并熟练运用这些知识点,你就可以在项目中高效地进行批量导入导出操作了。记住,持续学习和适应新的库版本是保持技术领先的关键。

    POI操作Excel 调用高德API操作示例

    使用POI操作Excel调用高德地图API操作Excel示例

    poi操作excel的jar包集.rar

    "poi操作excel的jar包集.rar"文件包含了运行Apache POI库所需的全部依赖,让你能够无缝进行Excel文件的操作,无论是2003的老版本还是2007及以后的新版本。 首先,我们需要理解Apache POI的主要组件: 1. **HSSF...

    POI操作Excel总结实例

    这个"POI操作Excel总结实例"的资料可能包含了一系列示例代码,教你如何利用Apache POI库来读取、写入和操作Excel文件。下面,我将详细讲解关于POI操作Excel的一些关键知识点。 1. **创建Excel工作簿(Workbook)** ...

    POI 操作Excel工具类

    在这个场景中,我们关注的是如何使用 POI 操作 Excel 工具类。这个工具类可以帮助开发者在 Java 环境下读写 Excel 文件,从而实现数据导入、导出等功能。下面将详细介绍 POI 操作 Excel 的关键知识点。 1. **工作簿...

Global site tag (gtag.js) - Google Analytics