读取excel数据的java类

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

项目中用户需要导入大量Excel表格数据到数据库,为此需求自己写了一个读取Excel数据的java类,现将代码贴出来与大家一起分享。 该类提供两个方法,一个方法用于读取Excel表格的表头,另一个方法用于读取Excel表格的内容。

(注:本类需要POI组件的支持,POI是apache组织下的一个开源组件,)

代码如下:

Java代码 package org.hnylj.poi.util;

import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Date; import java.util.HashMap; import java.util.Map;

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;

/** * 操作Excel表格的功能类 * @author:hnylj * @version 1.0 */ public class ExcelReader { private POIFSFileSystem fs; private HSSFWorkbook wb; private HSSFSheet sheet; private HSSFRow row; /** * 读取Excel表格表头的内容 * @param InputStream * @return String 表头内容的数组 * */ public String[] readExcelTitle(InputStream is) { try { fs = new POIFSFileSystem(is); wb = new HSSFWorkbook(fs); } catch (IOException e) { e.printStackTrace(); } sheet = wb.getSheetAt(0); row = sheet.getRow(0); //标题总列数 int colNum = row.getPhysicalNumberOfCells(); String[] title = new String[colNum]; for (int i=0; i<colNum; i++) { title[i] = getStringCellValue(row.getCell((short) i)); } return title; }

/** * 读取Excel数据内容 * @param InputStream * @return Map 包含单元格数据内容的Map对象 */ public Map<Integer,String> readExcelContent(InputStream is) { Map<Integer,String> content = new HashMap<Integer,String>(); String str = “”; try { fs = new POIFSFileSystem(is); wb = new HSSFWorkbook(fs); } catch (IOException e) { e.printStackTrace(); } sheet = wb.getSheetAt(0); //得到总行数 int rowNum = sheet.getLastRowNum(); row = sheet.getRow(0); int colNum = row.getPhysicalNumberOfCells(); //正文内容应该从第二行开始,第一行为表头的标题 for (int i = 1; i <= rowNum; i++) { row = sheet.getRow(i); int j = 0; while (j<colNum) { //每个单元格的数据内容用”-“分割开,以后需要时用String类的replace()方法还原数据 //也可以将每个单元格的数据设置到一个javabean的属性中,此时需要新建一个javabean str += getStringCellValue(row.getCell((short) j)).trim() + “-“; j ++; } content.put(i, str); str = “”; } return content; }

/** * 获取单元格数据内容为字符串类型的数据 * @param cell Excel单元格 * @return String 单元格数据内容 */ private String getStringCellValue(HSSFCell cell) { String strCell = “”; switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_STRING: strCell = cell.getStringCellValue(); break; case HSSFCell.CELL_TYPE_NUMERIC: strCell = String.valueOf(cell.getNumericCellValue()); break; case HSSFCell.CELL_TYPE_BOOLEAN: strCell = String.valueOf(cell.getBooleanCellValue()); break; case HSSFCell.CELL_TYPE_BLANK: strCell = “”; break; default: strCell = “”; break; } if (strCell.equals(“”) || strCell == null) { return “”; } if (cell == null) { return “”; } return strCell; }

[1][2][3][4][5]

当一个人真正觉悟的一刻,他放弃追寻外在世界的财富,而开始追寻他内心世界的真正财富

读取excel数据的java类

相关文章:

你感兴趣的文章:

标签云: