POI之HSSF初探

POI是APACHE出品的一个OFFICE文档操作类库,下面对读取HSSF的一个基本试用。

1、编写测试程序:

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;

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;
import org.apache.poi.ss.usermodel.Cell;

public class Test {
	public static void main(String[] args) {
		Test t = new Test();
		try {
			t.read();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void read() throws IOException {
		InputStream input = new FileInputStream("input.xls");
		POIFSFileSystem fs = new POIFSFileSystem(input);
		HSSFWorkbook wb = new HSSFWorkbook(fs);

		HSSFSheet sheet = wb.getSheetAt(0);
		for (int r = 0, size = sheet.getPhysicalNumberOfRows(); r < size; r++) {
			HSSFRow row = sheet.getRow(r);
			for (int c = 0, csize = row.getPhysicalNumberOfCells(); c < csize; c++) {
				HSSFCell cell = row.getCell(c);
				String value = "";
				int type = cell.getCellType();
				switch (type) {
				case Cell.CELL_TYPE_NUMERIC:
					if (HSSFDateUtil.isCellDateFormatted(cell)) {
						SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
						value = sdf.format(cell.getDateCellValue());
					} else {
						value = String.valueOf(cell.getNumericCellValue());
					}
					break;
				case Cell.CELL_TYPE_FORMULA:
					value = String.valueOf(cell.getCellFormula());
					break;
				default:
					value = cell.getStringCellValue();
				}
				System.out.print(c + "=" + value + "| ");
			}
			System.out.println();
		}

	}
}

 

2、准备相关的input.xls(其中公式列添加了乘积公式):

 

编号部门日期时间数字公式
IA100914-006变电一部2010-09-142010-09-14 17:21:1024
IA100914-005变电一部2010-09-142010-09-14 17:21:1036
IA100914-004变电一部2010-09-142010-09-14 17:21:1048
IA100719-001调度中心2010-07-192010-09-03 17:01:54510
IA100908-016变电一部2010-09-082010-09-14 16:48:28612

 

3、得到的输出:

0=编号| 1=部门| 2=日期| 3=时间| 4=数字| 5=公式|
0=IA100914-006| 1=变电一部| 2=2010-09-14 00:00:00| 3=2010-09-14 17:21:10| 4=2.0| 5=PRODUCT(E2,2)|
0=IA100914-005| 1=变电一部| 2=2010-09-14 00:00:00| 3=2010-09-14 17:21:10| 4=3.0| 5=PRODUCT(E3,2)|
0=IA100914-004| 1=变电一部| 2=2010-09-14 00:00:00| 3=2010-09-14 17:21:10| 4=4.0| 5=PRODUCT(E4,2)|
0=IA100719-001| 1=调度中心| 2=2010-07-19 00:00:00| 3=2010-09-03 17:01:54| 4=5.0| 5=PRODUCT(E5,2)|
0=IA100908-016| 1=变电一部| 2=2010-09-08 00:00:00| 3=2010-09-14 16:48:28| 4=6.0| 5=PRODUCT(E6,2)|

 

4、总体评价:

1)API比较底层,有些繁琐。

2)对于日期时间类型的处理,还有待改进

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值