- 浏览: 4381930 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (163)
- 职场 && 心情 (22)
- Java/Basic (17)
- Java/Compression (7)
- Java/Security (20)
- Java/Maven (3)
- Java/Cache (11)
- Eclipse (4)
- Spring (19)
- ORM/Hibernate (2)
- ORM/iBatis (3)
- DB/NoSQL (11)
- DB/MySQL (7)
- DB/MS SQL Server (4)
- OS/Linux (11)
- OS/Mac (7)
- C/C++ (4)
- Server Architecture/Basic (13)
- Server Architecture/Distributed (17)
- Moblie/Andriod (2)
- WebService (3)
- Objective-C (1)
- Html (1)
- 设计模式 (1)
- Scala (0)
- Kafka (1)
最新评论
-
w47_csdn:
证书安装:在"浏览"选项中选择" ...
Java加密技术(九)——初探SSL -
w47_csdn:
spiritfrog 写道你好,我按照你的步骤,tomcat中 ...
Java加密技术(九)——初探SSL -
liuyachao111:
11楼说的对 用@ControllerAdvicepublic ...
Spring 注解学习手札(八)补遗——@ExceptionHandler -
irayslu:
作者你好, 我把你的源码放在jdk6, jdk7 中运行正常, ...
Java加密技术(五)——非对称加密算法的由来DH -
夏季浅忆-卖小子:
为什么不能解压rar格式的压缩包呢
Java压缩技术(三) ZIP解压缩——Java原生实现
用Excel作为数据源,通过Java Web进行导入,需要POI的jar。
apachepoi(org.apache.poi 3.8) 可以支持公式、日期等格式!
不说废话,上代码:
由于Excel中的数据有日期、公式等等格式,参考http://poi.apache.org/spreadsheet/eval.html做了修改,完全兼容。
当前的Excel,C列是根据A、B相乘计算而来,D列是日期格式:
测试下:
就是这样了
详见附件!
存档于此,备查~~
当然,日期支持转换为数字了,需要重新转码了!
当然,日期支持转换为数字了,需要重新转码了!
apachepoi(org.apache.poi 3.8) 可以支持公式、日期等格式!
不说废话,上代码:
/** * Jun 25, 2012 */ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.apache.commons.io.FilenameUtils; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellValue; import org.apache.poi.ss.usermodel.FormulaEvaluator; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; /** * Excel组件 * * @author Snowolf * @version 1.0 * @since 1.0 */ public abstract class ExcelHelper { /** * Excel 2003 */ private final static String XLS = "xls"; /** * Excel 2007 */ private final static String XLSX = "xlsx"; /** * 分隔符 */ private final static String SEPARATOR = "|"; /** * 由Excel文件的Sheet导出至List * * @param file * @param sheetNum * @return */ public static List<String> exportListFromExcel(File file, int sheetNum) throws IOException { return exportListFromExcel(new FileInputStream(file), FilenameUtils.getExtension(file.getName()), sheetNum); } /** * 由Excel流的Sheet导出至List * * @param is * @param extensionName * @param sheetNum * @return * @throws IOException */ public static List<String> exportListFromExcel(InputStream is, String extensionName, int sheetNum) throws IOException { Workbook workbook = null; if (extensionName.toLowerCase().equals(XLS)) { workbook = new HSSFWorkbook(is); } else if (extensionName.toLowerCase().equals(XLSX)) { workbook = new XSSFWorkbook(is); } return exportListFromExcel(workbook, sheetNum); } /** * 由指定的Sheet导出至List * * @param workbook * @param sheetNum * @return * @throws IOException */ private static List<String> exportListFromExcel(Workbook workbook, int sheetNum) { Sheet sheet = workbook.getSheetAt(sheetNum); // 解析公式结果 FormulaEvaluator evaluator = workbook.getCreationHelper() .createFormulaEvaluator(); List<String> list = new ArrayList<String>(); int minRowIx = sheet.getFirstRowNum(); int maxRowIx = sheet.getLastRowNum(); for (int rowIx = minRowIx; rowIx <= maxRowIx; rowIx++) { Row row = sheet.getRow(rowIx); StringBuilder sb = new StringBuilder(); short minColIx = row.getFirstCellNum(); short maxColIx = row.getLastCellNum(); for (short colIx = minColIx; colIx <= maxColIx; colIx++) { Cell cell = row.getCell(new Integer(colIx)); CellValue cellValue = evaluator.evaluate(cell); if (cellValue == null) { continue; } // 经过公式解析,最后只存在Boolean、Numeric和String三种数据类型,此外就是Error了 // 其余数据类型,根据官方文档,完全可以忽略http://poi.apache.org/spreadsheet/eval.html switch (cellValue.getCellType()) { case Cell.CELL_TYPE_BOOLEAN: sb.append(SEPARATOR + cellValue.getBooleanValue()); break; case Cell.CELL_TYPE_NUMERIC: // 这里的日期类型会被转换为数字类型,需要判别后区分处理 if (DateUtil.isCellDateFormatted(cell)) { sb.append(SEPARATOR + cell.getDateCellValue()); } else { sb.append(SEPARATOR + cellValue.getNumberValue()); } break; case Cell.CELL_TYPE_STRING: sb.append(SEPARATOR + cellValue.getStringValue()); break; case Cell.CELL_TYPE_FORMULA: break; case Cell.CELL_TYPE_BLANK: break; case Cell.CELL_TYPE_ERROR: break; default: break; } } list.add(sb.toString()); } return list; } }
由于Excel中的数据有日期、公式等等格式,参考http://poi.apache.org/spreadsheet/eval.html做了修改,完全兼容。
当前的Excel,C列是根据A、B相乘计算而来,D列是日期格式:
测试下:
/** * Jun 25, 2012 */ import java.io.File; import java.io.IOException; import java.util.List; import static org.junit.Assert.*; import org.junit.Test; /** * * @author Snowolf * @version 1.0 * @since 1.0 */ public class ExcelHelperTest { @Test public void test() { String path = "excel.xlsx"; List<String> list = null; try { list = ExcelHelper.exportListFromExcel(new File(path), 0); assertNotNull(list); } catch (IOException e) { fail(); } } }
就是这样了
详见附件!
存档于此,备查~~
评论
11 楼
zi_wu_xian
2016-09-02
好复杂啊,还是用PageOffice导入excel文件吧,代码简单,生成的文件格式规范
10 楼
sandyagor
2016-08-21
这是一个maven工程,
9 楼
Agwawaw
2015-09-14
项目总是报错,不知为什么
8 楼
yu335738607
2015-08-24
加qq335738607 沟通此问题
7 楼
yu335738607
2015-08-24
有excel 大小限制吗
6 楼
zhenglu119
2013-06-05
XSSFWorkbook 在3.8jar包的情况下。导入不进来, 是神马情况啊。
5 楼
snowolf
2012-06-29
snowolf 写道
snowolf 写道
programdolt 写道
很好,getRichStringCellValue 日期,公式等都支持了?
通过FormulaEvaluator evaluator = workbook.getCreationHelper() .createFormulaEvaluator(); Cell cell = row.getCell(new Integer(j)); CellValue cellValue = evaluator.evaluate(cell);进行公式、日期等等的解析,完全支持了!
当然,日期支持转换为数字了,需要重新转码了!
case Cell.CELL_TYPE_NUMERIC: // 这里的日期类型会被转换为数字类型,需要判别后区分处理 if (DateUtil.isCellDateFormatted(cell)) { sb.append(SEPARATOR + cell.getDateCellValue()); } else { sb.append(SEPARATOR + cellValue.getNumberValue()); }这样就有对应的日期了,当然,你可以根据需要转换格式!
4 楼
Function
2012-06-28
试试 jxl
3 楼
snowolf
2012-06-28
snowolf 写道
programdolt 写道
很好,getRichStringCellValue 日期,公式等都支持了?
通过FormulaEvaluator evaluator = workbook.getCreationHelper() .createFormulaEvaluator(); Cell cell = row.getCell(new Integer(j)); CellValue cellValue = evaluator.evaluate(cell);进行公式、日期等等的解析,完全支持了!
当然,日期支持转换为数字了,需要重新转码了!
2 楼
snowolf
2012-06-28
programdolt 写道
很好,getRichStringCellValue 日期,公式等都支持了?
通过FormulaEvaluator evaluator = workbook.getCreationHelper() .createFormulaEvaluator(); Cell cell = row.getCell(new Integer(j)); CellValue cellValue = evaluator.evaluate(cell);进行公式、日期等等的解析,完全支持了!
1 楼
programdolt
2012-06-27
很好,getRichStringCellValue 日期,公式等都支持了?
发表评论
-
DisplayTag POI支持——Excel文件导出中文乱码问题&包依赖问题-解决
2012-09-29 15:11 7002DisplayTag,可能大部分人都用过,也知道他非常的方便。 ... -
Mountain Lion 升级后Java不可用问题补救
2012-07-31 08:10 7924升级到Mountain Lion后,让我最头痛的是原来的jdk ... -
征服 Kestrel + XMemcached
2012-07-24 12:06 4673接上一篇 征服Kestrel,介绍XMemcached对于Ke ... -
征服 Kestrel
2012-07-23 18:33 13241因为要面对高并发PUSH需求,考虑将其按队列方式实现,最终选型 ... -
JVM学习笔记——内存跟踪
2012-04-12 10:35 0引用 jmap Usage: jmap [optio ... -
BoneCP、DBCP、C3P0、Proxool连接池比较
2012-02-29 13:20 0Proxool关键参数imultaneousBuildTh ... -
JVM学习笔记
2012-02-21 11:48 0以前写代码的时候,从 ... -
Java关键字——transient
2011-12-29 17:27 8729眼看就要2012了,这一年给自己树立的研究课题基本上因为工作的 ... -
Ehcache简单应用——RSSReaderTag
2010-08-04 15:00 3318关于缓存,关于自己运用,大部分情况是通过ORM配置生效。基本上 ... -
基于Web应用的海量数据存储思考
2010-07-30 15:03 0今天讨论很多有关于基 ... -
昨日困惑——Tomcat之应用不能启动!
2010-07-29 10:23 11591昨天下午,我一直在调试程序,由于本地环境等等局限性问题,我只能 ... -
正则表达式
2010-06-30 11:32 0用来验证email的正则 \w+\.?\w+@\w+(\. ... -
JNDI
2010-06-11 12:31 0package com.netqin.common.dbt ... -
评选你认为最没水准的代码
2010-05-19 11:27 0十分不好意思,我的技术洁癖开始作怪。最近接触一些代码,实在是看 ... -
无符号整型
2010-05-18 14:38 0private static long readUInt(I ... -
数据压缩相关(zlib,bzip2,lzma)
2010-04-13 13:45 0一:下面简单说明如何把zlib加入到MFC程序中,提供内存压缩 ... -
Ant编译无响应问题
2010-01-18 10:38 6318前些日子因为要搞自动编译需要用到Ant执行相关操作。Ant以前 ... -
基本数据类型进制转换
2010-01-15 10:49 4361已经很久没有写博客了,已经有很多人不止一次的反问我:“你怎么不 ... -
webservice 常用网址
2009-12-20 21:52 0<p><p>下面总结了一些常用的Web ... -
计算时间
2009-12-02 17:29 0public static int betweenDays ...
相关推荐
java读取excel数据导入数据库源码 java读取excel数据导入数据库源码
自定义的一个excel文件导入导出类,支持Excel2003到2010的格式。里面也有简单的配置文件的创建。
java 导入Excel 文件,兼容Excel 2003(后缀名:xls)及 2007(后缀名:xlsx)的文件,同时还支持csv格式的文件
1、java解析读取excel文件中的数据,并写入数据库。 2、java读取数据库数据,并导出为excel文件。 3、README.md中有详细的操作步骤示例。 使用说明: 1. 先使用postman导入:other/excel相关.postman_collection....
java实现excel导入数据库
java 导入导出excel、xml文件解析工具,减少工作量。
Java实现Excel导入导出简介 Java实现Excel导入导出是通过...Java实现Excel导入导出需要掌握Excel文件的结构、Java的文件操作、Java的数据结构和算法等技术。通过这些技术,可以实现对Excel文件的高效读写和数据处理。
java代码实现".xls和.xlsx"文件的导入和导出,有具体的题目描述和代码实现,注释也很详细!!!
Excel源代码,导入导出各种工具类 <groupId>org.apache.poi <artifactId>poi <groupId>org.apache.poi <artifactId>poi-scratchpad 代码实例: String path = ""; byte[] bytes; vo.setCurrentPage(0); vo....
回答csdn论坛:Java语言下excel导入到mysql数据库表...
Java导入excel文件,里面是一个完整的Java项目,包括了需要的jar包
java版Excel文件导入数据库源代码 servlet容器:tomcat(或者其他) 数据库:oracle(或者其他) 使用框架:jsp+struts1.2 支持字符型/数据型/日期型/CLOB等数据 使用步骤: 1.下载本资源,解压后得到4个文件:...
这个是使用java语言 poi导入excel到数据库中,同时使用了xml对excel的每个单元格数据进行了非空验证。经测试,导入数据库成功。
Java版Excel文件的导入和导出,利用POI操作excel文件
前几天项目上需要加上导入导出,在网上找了一下,么有...于是自己写,源码里所需要的jar都有,从jsp界面进行Excel的导入导出,并可用于上传和下载。如有所用,喜不自禁,分享,开源的意义。 写的不是特别好,不喜勿喷!
EXCEL文件导入:JAVA+EXCEL+API简介实现excel的导入导出
java jxl 通过excel模板创建新文件并将数据导入excel,实现按行、列插入数据
poi.zip java读取excel文件,其中bin压缩文件中含有jar包,eclipse导入时可直接使用;src压缩文件含有java源代码,需要阅读源码的童鞋可以下载使用
通过easypoi进行Excel操作,包含:导出Excel,导入Excel。将该模块引入项目后,无需再重复写poi操作,只需要实现PoiService接口就可以。详情见demo。TestPoi