xls文件的导入实现过程

编写页面form表单(注意要使用enctype="multipart/form-data")

<form action="improtClassData.do?method=classInfoImpl" method="post" enctype="multipart/form-data">
	<input type="file" name="classFile"/>
	<input type="submit" class="btn" value="导入"/>
</form>
action接收到后做如下操作:

从formbean中得到文件

把文件存放本地,包括声明输入流读取文件,创建本地文件,声明输出流,把读到的输入流用输出流写入本地文件

然后使用poi包里面提供的api获取保存的本地xls里面的内容

1、声明并得到本地xls的输入流

InputStream is = new FileInputStream(filepath);

2、声明一个HSSFWorkbook对象‘

HSSFWorkbook wb = new HSSFWorkbook(is);

3、获取xls的第一页(声明操作对象)

HSSFSheet sheet = wb.getSheetAt(0);

4、获取xls第一页的行数,并遍历每一行,每一行都得到HSSFRow对象,代表xls的这一行

HSSFRow row = sheet.getRow(r);

6、用下标索引得到每一行的索引列的单元,注意此处需要判断类型并转换成基本类型或String

getCellStringValue(row.getCell(0));//传入,判断值类型并获取实际值
public String getCellStringValue(HSSFCell cell) {
		String cellValue = "";
		if (cell != null)
			switch (cell.getCellType()) {
			case HSSFCell.CELL_TYPE_STRING:
				cellValue = cell.getStringCellValue();
				if (cellValue.trim().equals("")
						|| cellValue.trim().length() <= 0)
					cellValue = " ";
				break;
			case HSSFCell.CELL_TYPE_NUMERIC:
				cellValue = String.valueOf(cell.getNumericCellValue());
				break;
			case HSSFCell.CELL_TYPE_FORMULA:
				cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
				cellValue = String.valueOf(cell.getNumericCellValue());
				break;
			case HSSFCell.CELL_TYPE_BLANK:
				cellValue = " ";
				break;
			case HSSFCell.CELL_TYPE_BOOLEAN:
				break;
			case HSSFCell.CELL_TYPE_ERROR:
				break;
			default:
				break;
			}
		return cellValue;
	}

遇到过的问题:

读取xls文件时出现过,那文件曾经删除过数据,但是貌似还存在一些格式,导致读到了这些空白行,但是又没有数据,最后抛异常,在读取时要先做判断

获取模板中提前设置的公式:

cell=row.getCell(c);
 if (HSSFCell.CELL_TYPE_FORMULA == cell.getCellType()) {
       //取得公式单元格的公式,重新设置
    cell.setCellFormula(cell.getCellFormula());
  }


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值