展开全部

package edu.sjtu.erplab.poi;

import java.io.InputStream&ch=ww.xqy.chain" target="_blank" class="link-baike">FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream;

import java.text.SimpleDateFormat;

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.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;

/**

* 操作Excel表格的功能类

*/

public class ExcelReader {

private POIFSFileSystem fs;

private HSSFWorkbook wb;

private HSSFSheet sheet;

private HSSFRow row;

/**

* 读取Excel表格表头的内容

* @32313133353236313431303231363533e78988e69d8331333365643662param 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();

System.out.println("colNum:" + colNum);

String[] title = new String[colNum];

for (int i = 0; i

//title[i] = getStringCellValue(row.getCell((short) i));

title[i] = getCellFormatValue(row.getCell((short) i));

}

return title;

}

/**

* 读取Excel数据内容

* @param InputStream

* @return Map 包含单元格数据内容的Map对象

*/

public Map readExcelContent(InputStream is) {

Map content = new HashMap();

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

// 每个单元格的数据内容用"-"分割开,以后需要时用String类的replace()方法还原数据

// 也可以将每个单元格的数据设置到一个javabean的属性中,此时需要新建一个javabean

// str += getStringCellValue(row.getCell((short) j)).trim() +

// "-";

str += getCellFormatValue(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;

}

/**

* 获取单元格数据内容为日期类型的数据

*

* @param cell

*            Excel单元格

* @return String 单元格数据内容

*/

private String getDateCellValue(HSSFCell cell) {

String result = "";

try {

int cellType = cell.getCellType();

if (cellType == HSSFCell.CELL_TYPE_NUMERIC) {

Date date = cell.getDateCellValue();

result = (date.getYear() + 1900) + "-" + (date.getMonth() + 1)

+ "-" + date.getDate();

} else if (cellType == HSSFCell.CELL_TYPE_STRING) {

String date = getStringCellValue(cell);

result = date.replaceAll("[年月]", "-").replace("日", "").trim();

} else if (cellType == HSSFCell.CELL_TYPE_BLANK) {

result = "";

}

} catch (Exception e) {

System.out.println("日期格式不正确!");

e.printStackTrace();

}

return result;

}

/**

* 根据HSSFCell类型设置数据

* @param cell

* @return

*/

private String getCellFormatValue(HSSFCell cell) {

String cellvalue = "";

if (cell != null) {

// 判断当前Cell的Type

switch (cell.getCellType()) {

// 如果当前Cell的Type为NUMERIC

case HSSFCell.CELL_TYPE_NUMERIC:

case HSSFCell.CELL_TYPE_FORMULA: {

// 判断当前的cell是否为Date

if (HSSFDateUtil.isCellDateFormatted(cell)) {

// 如果是Date类型则,转化为Data格式

//方法1:这样子的data格式是带时分秒的:2011-10-12 0:00:00

//cellvalue = cell.getDateCellValue().toLocaleString();

//方法2:这样子的data格式是不带带时分秒的:2011-10-12

Date date = cell.getDateCellValue();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

cellvalue = sdf.format(date);

}

// 如果是纯数字

else {

// 取得当前Cell的数值

cellvalue = String.valueOf(cell.getNumericCellValue());

}

break;

}

// 如果当前Cell的Type为STRIN

case HSSFCell.CELL_TYPE_STRING:

// 取得当前的Cell字符串

cellvalue = cell.getRichStringCellValue().getString();

break;

// 默认的Cell值

default:

cellvalue = " ";

}

} else {

cellvalue = "";

}

return cellvalue;

}

public static void main(String[] args) {

try {

// 对读取Excel表格标题测试

InputStream is = new FileInputStream("d:\\test2.xls");

ExcelReader excelReader = new ExcelReader();

String[] title = excelReader.readExcelTitle(is);

System.out.println("获得Excel表格的标题:");

for (String s : title) {

System.out.print(s + " ");

}

// 对读取Excel表格内容测试

InputStream is2 = new FileInputStream("d:\\test2.xls");

Map map = excelReader.readExcelContent(is2);

System.out.println("获得Excel表格的内容:");

for (int i = 1; i <= map.size(); i++) {

System.out.println(map.get(i));

}

} catch (FileNotFoundException e) {

System.out.println("未找到指定路径的文件!");

e.printStackTrace();

}

}

}

java读取excel某个单元格的值_java poi怎么获取excel单元格的内容相关推荐

  1. Java读取并修改图片的像素值

    Java程序读取图片像素的值类, package work;import java.awt.AWTException; import java.awt.Dimension; import java.a ...

  2. excel查找定位删除0值_查找和删除Excel行的快速方法

    excel查找定位删除0值 It's finally summer, and you need to stay cool, even when you're using Excel. Here's a ...

  3. java获取泛型的值_java 反射之获取泛型对象的所有字段与对应的值(包括父类的)...

    public static void main(String[] args) throwsIntrospectionException { SysUser obj= newSysUser(); obj ...

  4. java中excel导入图片_java POI实现向Excel中插入图片

    做Web开发免不了要与Excel打交道.今天老大给我一个任务-导出Excel.开始想的还是蛮简单的,无非就是查找,构建Excel,response下载即可.但是有一点不同,就是要加入图片,就是这个加入 ...

  5. java正则表达式所有字符串_java正则表达式如何获取字符串中所有匹配内容

    java正则表达式如何获取字符串中所有匹配内容以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! java正则表达式如何获取 ...

  6. java 读取 excel poi_java poi怎么获取excel单元格的内容?

    展开全部 package edu.sjtu.erplab.poi; import java.io.InputStream&ch=ww.xqy.chain" target=" ...

  7. java 判断单元格为空_java – 如何在Apache POI中获取Excel空单元格值?

    我有一个巨大的excel文件与吨的列,看起来像这样: – Column1 Column2 Column3 Column4 Column5 abc def ghi mno pqr ...... 这是我写 ...

  8. pandas 读取某一单元格的值_一个参数一个Excel表,让你玩转Pandas中read_excel()表格读取!...

    建议文末获取练习素材 一个个操作一遍 本文大纲 我觉得很有必要讲述这个文章,进行数据处理的第一步就是Python数据读取.但是你可能没想到,在进行数据读取的同时,我们其实可以配合相关参数做很多事儿,这 ...

  9. java poi excel 单元格样式_java poi批量导出excel 设置单元格样式

    POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb ...

最新文章

  1. jquery拖拽实现UI设计组件
  2. 《设计模式解析(第2版)》
  3. C语言中标准输入流、标准输出流、标准错误输出流
  4. 最长不下降子序列的O(n^2)算法和O(nlogn)算法
  5. 动态规划求解序列问题(LIS、JLIS)
  6. linux 中安装 JDK
  7. linux服务器监听服务sid_linux下重启oracle服务:监听器和实例
  8. Lind.DDD.Aspects通过Plugins实现方法的动态拦截~Lind里的AOP
  9. 女孩,你为什么那么拼命工作?
  10. 1602: [Usaco2008 Oct]牧场行走
  11. 作为 SaaS 初创公司产品负责人,我学到了 5 条经验教训!
  12. PostgreSQL在何处处理 sql查询之二十九
  13. si4463如何读取RSSI
  14. jmu-python-涨工资
  15. SPECCPU2006 Spec2006 使用说明
  16. 什么是formData
  17. 网易视频云首推多路互动直播,首批测试邀请火爆来袭
  18. 企业微信网页授权及JS-SDK碰到检查域名所有权不通过的问题
  19. linux下tomcat查看端口
  20. [渗透测试][Kali]对DC-2靶机进行渗透测试

热门文章

  1. 怎么测试ajax get请求,为什么我的AJAX在运行测试时请求dev中的PUT请求,但请求了GET请求?...
  2. mysql在cmd命令行下的相关操作
  3. python 投资组合_重新设计投资组合的好处
  4. Ajax完整资料加代码
  5. DotNetNuke 5 C#版本解读之2--HTTP Modules
  6. sass和compass基础用法
  7. javascript字符串方法总结
  8. 《深入理解Hadoop(原书第2版)》——2.6本章小结
  9. X5开发中buttongrounp对应contents组件切换时速度快点无效
  10. win7系统下载 ghost win7 Sp1 64位纯净3月版