- 浏览: 4399753 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 7046DisplayTag,可能大部分人都用过,也知道他非常的方便。 ... -
Mountain Lion 升级后Java不可用问题补救
2012-07-31 08:10 7986升级到Mountain Lion后,让我最头痛的是原来的jdk ... -
征服 Kestrel + XMemcached
2012-07-24 12:06 4733接上一篇 征服Kestrel,介绍XMemcached对于Ke ... -
征服 Kestrel
2012-07-23 18:33 13306因为要面对高并发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 8785眼看就要2012了,这一年给自己树立的研究课题基本上因为工作的 ... -
Ehcache简单应用——RSSReaderTag
2010-08-04 15:00 3358关于缓存,关于自己运用,大部分情况是通过ORM配置生效。基本上 ... -
基于Web应用的海量数据存储思考
2010-07-30 15:03 0今天讨论很多有关于基 ... -
昨日困惑——Tomcat之应用不能启动!
2010-07-29 10:23 11635昨天下午,我一直在调试程序,由于本地环境等等局限性问题,我只能 ... -
正则表达式
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 6360前些日子因为要搞自动编译需要用到Ant执行相关操作。Ant以前 ... -
基本数据类型进制转换
2010-01-15 10:49 4402已经很久没有写博客了,已经有很多人不止一次的反问我:“你怎么不 ... -
webservice 常用网址
2009-12-20 21:52 0<p><p>下面总结了一些常用的Web ... -
计算时间
2009-12-02 17:29 0public static int betweenDays ...
相关推荐
java读取excel数据导入数据库源码 java读取excel数据导入数据库源码
总结来说,Java通过Apache POI库提供了强大的Excel文件处理能力,能够方便地进行导入和导出操作。通过理解这些基本概念和实践,你可以构建起处理Excel文件的强大工具,无论是数据分析还是报表生成,都能游刃有余。
在Java编程中,导入Excel文件是一项常见的任务,特别是在数据处理和数据分析领域。为了支持不同版本的Excel文件以及CSV格式的数据,开发者需要了解并掌握相关的API和技术。以下将详细讲解如何在Java中处理`xls`、`...
自定义的一个excel文件导入导出类,支持Excel2003到2010的格式。里面也有简单的配置文件的创建。
### 利用JAVA操作EXCEL文件的关键知识点 #### 一、JAVA EXCEL API 简介 - **项目背景**:随着Web应用的发展,越来越多的应用场景需要通过Web端操作Excel文件,而传统的CSV文件虽然可以被Excel打开,但无法实现对...
反之,也可以先将XML解析为Java对象,再写入到Excel文件。 2. **转换工具**:ExcelXmlParse可能是实现这种转换的工具类或框架,它封装了读写Excel和XML的逻辑,提供便捷的接口供开发者调用。 3. **性能优化**:在...
1、java解析读取excel文件中的数据,并写入数据库。 2、java读取数据库数据,并导出为excel文件。 3、README.md中有详细的操作步骤示例。 使用说明: 1. 先使用postman导入:other/excel相关.postman_collection....
首先,Java的文件操作是基础,我们需要读取Excel文件。在Java中,可以使用Apache POI库来处理Microsoft Office格式的文件,如Excel。POI库提供了API,使得我们可以方便地读取、写入和修改Excel文件。例如,通过...
要完成这个过程,我们需要使用特定的库来读取Excel文件,并使用JDBC(Java Database Connectivity)来与MySQL数据库进行交互。下面将详细解释如何实现这个功能。 首先,我们需要引入两个关键的第三方库:Apache POI...
5. **关闭资源**:操作完成后,记得关闭数据库连接和Excel文件输入流,释放系统资源。 接着,我们来看数据库数据导出到Excel的过程: 1. **查询数据库**:使用JDBC的`Statement`或`PreparedStatement`执行SQL查询...
在 Java 项目中想要实现 excel 文件的导入和导出功能,需要引入 jxl 库,该库提供了对 excel 文件的读写操作。 二、创建工作簿 首先,需要创建一个工作簿对象,用于存储 excel 文件的数据。可以使用 `...
在Java编程环境中,操作Excel文件是一项常见的任务,尤其在数据处理、数据分析或自动化测试等领域。本文将深入探讨如何使用Java来读取、写入和修改Excel文件,主要涉及的库有Apache POI和JExcelApi。 Apache POI是...
它允许开发者在Java应用程序中创建、修改和读取Excel文件。在进行批量导入和导出Excel数据时,Apache POI是一个非常实用的选择。以下是关于使用Java POI进行Excel操作的关键知识点: 1. **Apache POI介绍**: ...
导入数据的过程中,首先需要创建一个`Workbook`对象来代表Excel文件,然后通过`Sheet`对象来操作单个工作表,接着是`Row`和`Cell`对象来处理每一行和每一列的数据。使用POI读取Excel数据的基本步骤如下: 1. 加载...
在Java编程领域,处理Excel文件是一项常见的任务,特别是在数据导入导出、报表生成以及数据分析等场景。本篇文章将深入探讨如何使用开源库easypoi来实现Java中的Excel操作,包括Excel的导出和导入功能。 easypoi是...
Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 ...在本文中,我们已经详细介绍了如何使用 Java POI 实现 Excel 导入导出功能,包括读取和写入 Excel 文件。
Excel源代码,导入导出各种工具类 <groupId>org.apache.poi <artifactId>poi <groupId>org.apache.poi <artifactId>poi-scratchpad 代码实例: String path = ""; byte[] bytes; vo.setCurrentPage(0); vo....
2. Excel 文件操作:Excel 文件操作是指使用 Java 语言对 Excel 文件进行读取、写入、删除等操作的过程。 3. JXL 库:JXL 库是指 Java Excel API,即 Java 语言对 Excel 文件的操作 API。 4. Workbook:Workbook 是...
在Java中,使用Apache POI可以方便地操作Excel文件,如创建、修改、读取和写入数据。 2. **工作簿(Workbook)和工作表(Sheet)**:在Apache POI中,`Workbook`代表一个Excel文件,而`Sheet`则表示工作簿中的一页...