java excel poi 包_用java poi包读取Excel单元格
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 < colnum) {
// 每个单元格的数据内容用"-"分割开,以后需要时用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;
}
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;
}
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;
}
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");
mapmap = 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();
}
}
}
3.总结
因为excel单元格中的内容往往都有一定的格式,比如日期型,数字型,字符串型,因此在读取的时候要进行格式判断,不然会出现错误。常见的就是不能正常读取日期。在代码实例中有一个方法:
getcellformatvalue(hssfcell cell)
往这个方法中传入excel单元格就能识别单元格格式,并转化为正确的格式。
ps:2012-2-23
代码实例中有一段代码:
int colnum = row.getphysicalnumberofcells();
其中的hssfrow.getphysicalnumberofcells();这个方法是用于获取一行中存在的单元格数,poi的官方api中有给出getphysicalnumberofcells方法的解释
java excel poi 包_用java poi包读取Excel单元格相关推荐
- python excel 格式刷_巧用格式刷解决合并单元格无法统计问题
我是谁!我来自哪里!我要去往何处! 好吧,为了能对得起我的名字<阿凯的Excel> 本小编决定每周不少于一篇文章是献给Excel的~ 因为最近有风Python要嵌入Excel,我才想好好学 ...
- poi导出excel写入公式_【java poi 写入Excel后读取公式值问题】poi导入excel
java poi 写入Excel后读取公式值问题 不用改公式,只需要用cell.getNumericCellValue()获取,读出来就是正确的值了,如果你读出来的还有问题,说明你其他的地方写的还有问 ...
- java生成平滑散点图_【转载】如何在excel制作散点图平滑线散点图
散点图和平滑线散点图是科技论文中经常用到的两种图形,两者结合在同一个图形之中,既可以表示某项指标在多个测定时期的原始数据,也能够直观地反映测定指标的平均值.预测值随时间的变化趋势. 例如:某地区施用石 ...
- java设置excel单元格格式为百分比_Java 设置Excel条件格式示例代码(高亮条件值、应用单元格值/公式/数据条等类型)...
概述 在Excel中,应用条件格式功能可以在很大程度上改进表格的设计和可读性,用户可以指定单个或者多个单元格区域应用一种或者多种条件格式.本篇文章,将通过Java程序示例介绍条件格式的设置方法,设置条 ...
- java项目----教务管理系统_基于Java的教务管理系统
java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...
- poi读取合并单元格
poi读取合并单元格 学习了:http://blog.csdn.net/ycb1689/article/details/9764191 进行了列合并单元格的修正:原来是我自己找错了地方: import ...
- php循环读取excel每个单元格,php使用PHPexcel类读取excel文件(循环读取每个单元格的数据)...
error_reporting(E_ALL); date_default_timezone_set('Asia/ShangHai'); include_once('Classes/PHPExcel/I ...
- Excel如何将工作表按照表内某一单元格命名
今天跟大家分享一下Excel如何将工作表按照表内某一单元格命名 1.如下图我们想要按照工作表A1单元格内容命名工作表. 2.首先我们点击下图选项(Excel工具箱,百度即可了解详细的下载安装信息,本文 ...
- 利用VBA将excel中链接转换为图片形式存放在指定的单元格中
利用VBA将excel中链接转换为图片形式存放在指定的单元格中 VBA代码如下 Private Declare Function URLDownloadToFile Lib "urlmon& ...
- php使用PHPexcel类读取excel文件(循环读取每个单元格的数据)
error_reporting(E_ALL); date_default_timezone_set('Asia/ShangHai'); include_once('Classes/PHPExcel/I ...
最新文章
- 深度好文 — 微服务和API网关限流熔断实现关键逻辑思路
- gitlab更改默认Nginx
- python多线程处理数据库_在flask框架下利用Python的threading或thread多线程库如何操作数据库?...
- 基于Elasticsearch实现搜索推荐
- 业务处理速度变慢?且看IT如何成为救世主
- cli2弃用了吗 vue_vue cli - 2 升级到 3的问题汇总
- Linux-c对一个十六进制数的某一位取反
- CS224N刷题——Assignment2.1_TensorflowSoftmax
- 【开源分享】微信营销系统(第三方微信平台)github 开源
- android扫描局域网中的所有ip,NMAP扫描局域网内在线IP
- C/C++获取CPU等硬件信息屏幕截图
- ATSHA204A加密芯片
- 穿越Java - 基础篇 第三章 面向对象介绍 | 第4节 成员变量和局部变量
- HTML5期末大作业:仿悦世界游戏网站设计——仿悦世界游戏官网(6页) HTML+CSS+JavaScript web网页设计实例作业
- 300个VB全面控制Excel方法
- 基于JAVA健康生活网站计算机毕业设计源码+系统+mysql数据库+lw文档+部署
- 深扒联易融招股书:毛利率高、研发占比低,近三年合计亏约30亿
- StarUML使用说明
- 2021-11-3 软件模拟IIC时序,并和EEPROM存储芯片24C02双向通信以及显示功能
- win10 创建访客_建立一个访客会很喜欢的网站
热门文章
- 10分钟手把手教你用Android手撸一个简易的个人记账App
- python 多态app_**python多态
- for循环嵌套 正三角和倒三角
- slack软件怎么用
- 【mysql】--explain命令解析
- 移动周刊第 188 期:Android 安全性要点与规范核心详析
- 牛客算法周周练11 A.切题之路 签到题
- python df删除特定行_pandas.DataFrame删除/选取含有特定数值的行或列实例
- SQL注入之floor报错注入
- 浅谈屏蔽搜索引擎爬虫(蜘蛛)抓取/索引/收录网页的几种思路