POI--HSSFCell类

本文详细介绍了使用Apache POI库的HSSFCell类创建、读取Excel单元格的方法,包括设置不同类型的值(如日期、数值、字符串、错误和公式),以及获取单元格值的类型和内容。还提到了获取行中单元格位置的相关方法,为处理Excel文件提供指导。
摘要由CSDN通过智能技术生成

  • 用POI创建单元格,使用「HSSFCell」类
该类包含三个构造方法。 
protected HSSFCell(Workbook book, Sheet sheet, int row, CellValueRecordInterface cval)
protected HSSFCell(Workbook book, Sheet sheet, int row, short col)
protected HSSFCell(Workbook book, Sheet sheet, int row, short col, int type)
同之前一样,虽然有三个构造方法,但都是protected类型的,所以直接用构造方法创建单元格行不通,只能通过行来创建单元格。 


  • 创建单元格
在一个工作表里创建一个单元格,必须用「HSSFRow」类的「createCell」方法。 
使用方法如下: 
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell((short)2);

  • 读取现有单元格
要读取某一行现有的单元格,使用「HSSFRow」类的「getCell」方法』。
使用方法如下: 
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
HSSFRow row = sheet.getRow(0);
HSSFCell cell = row.getCell((short)2);

  • 行里创建单元格
下面来看看如何在取得现有行或者在新创建的行里,再创建一个单元格。用POI来创建的话,使用「HSSFRow」类的「createCell」方法。 
public HSSFCell createCell(short column):
(short column)创建指定列号的单元格。列号和行号一样,也是从0开始数的。创建的单元格以「HSSFCell」类的对象返回,关于「HSSFCell」类的介绍,我们放在下面几章进行。 
package linkin;


import java.io.FileOutputStream;
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;


public class Linkin
{
	public static void main(String[] args)
	{
		HSSFWorkbook workbook = new HSSFWorkbook();


		HSSFSheet sheet = workbook.createSheet();
		HSSFRow row = sheet.createRow(1);//创建序号为1的行,第2行


		HSSFCell cell = row.createCell(2);//创建序号为2的单元格,第二行第3格
		cell.setCellValue("test");//写入test


		FileOutputStream out = null;
		try
		{
			out = new FileOutputStream("sample.xls");
			workbook.write(out);
		}
		catch (IOException e)
		{
			System.out.println(e.toString());
		}
		finally
		{
			try
			{
				out.close();
			}
			catch (IOException e)
			{
				System.out.println(e.toString());
			}
		}
	}


}

  • 读取单元格
如果要从现有的行里取得某一个单元格,POI提供了「HSSFRow」类的「getCell」方法。 
public HSSFCell getCell(short cellnum):
(short cellnum)取得指定列号的单元格。如果是不存在的单元格,会返回「null」。 
package linkin;


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;


public class Linkin
{
	public static void main(String[] args)
	{
		HSSFWorkbook workbook = new HSSFWorkbook();


		HSSFSheet sheet = workbook.createSheet();
		HSSFRow row = sheet.createRow(1);//创建第二行


		HSSFCell cell = row.createCell((short) 2);//创建第二行第三格
		cell.setCellValue("test");//第二行第三格写入test


		for (int i = 0; i < 3; i++)
		{
			HSSFCell c = row.getCell((short) i);
			if (c == null)
			{
				System.out.println("第" + i + "列单元格不存在");
			}
			else
			{
				System.out.println("第" + i + "列单元格获取成功");
			}
		}
	}


}

  • 读取有值的Excel表格
package linkin;


import java.io.FileInputStream;
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;


public class Linkin
{
	public static void main(String[] args)
	{
		FileInputStream in = null;
		HSSFWorkbook workbook = null;


		try
		{
			in = new FileInputStream("sample.xls");
			POIFSFileSystem fs = new POIFSFileSystem(in);
			workbook = new HSSFWorkbook(fs);
		}
		catch (IOException e)
		{
			System.out.println(e.toString());
		}
		finally
		{
			try
			{
				in.close();
			}
			catch (IOException e)
			{
				System.out.println(e.toString());
			}
		}


		HSSFSheet sheet = workbook.getSheetAt(0);//取得第一张sheet
		HSSFRow row = sheet.getRow(1);//第2行


		for (int i = 0; i < 3; i++)
		{
			HSSFCell c = row.getCell((short) i);
			if (c == null)
			{
				System.out.println("第" + i + "列单元格不存
  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值