- 浏览: 854014 次
文章分类
- 全部博客 (365)
- java (124)
- spring mvc (21)
- spring (22)
- struts2 (6)
- jquery (27)
- javascript (24)
- mybatis/ibatis (8)
- hibernate (7)
- compass (11)
- lucene (26)
- flex (0)
- actionscript (0)
- webservice (8)
- rabbitMQ/Socket (15)
- jsp/freemaker (5)
- 数据库 (27)
- 应用服务器 (21)
- Hadoop (1)
- PowerDesigner (3)
- EJB (0)
- JPA (0)
- PHP (2)
- C# (0)
- .NET (0)
- html (2)
- xml (5)
- android (7)
- flume (1)
- zookeeper (0)
- 证书加密 (2)
- maven (1)
- redis (2)
- cas (11)
最新评论
-
zuxianghuang:
通过pom上传报错 Artifact upload faile ...
nexus上传了jar包.通过maven引用当前jar,不能取得jar的依赖 -
流年末年:
百度网盘的挂了吧???
SSO单点登录系列3:cas-server端配置认证方式实践(数据源+自定义java类认证) -
953434367:
UfgovDBUtil 是什么类
Java发HTTP POST请求(内容为xml格式) -
smilease:
帮大忙了,非常感谢
freemaker自动生成源代码 -
syd505:
十分感谢作者无私的分享,仔细阅读后很多地方得以解惑。
Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
用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;
- }
- }
/** * 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();
- }
- }
- }
/** * 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(); } } }
就是这样了
详见附件!
发表评论
-
eclispe 实用插件大全
2016-03-31 10:17 836在一个项目的完整的生命周期中,其维护费用,往往是其开发费用的 ... -
单点登录 SSO Session
2016-03-14 16:56 4052单点登录在现在的 ... -
通用权限管理设计 之 数据库结构设计
2016-01-26 13:22 2952通用权限管理设计 之 ... -
分享一个基于ligerui的系统应用案例ligerRM V2(权限管理系统)(提供下载)
2016-01-26 13:22 1493分享一个基于ligerui的系统应用案例ligerRM V2 ... -
通用权限管理设计 之 数据权限
2016-01-26 13:20 740通用权限管理设计 之 数据权限 阅读目录 前 ... -
使用RSA进行信息加密解密的WebService示例
2015-12-28 10:30 876按:以下文字涉及RS ... -
防止网站恶意刷新
2015-10-22 10:55 705import java.io.IOExcept ... -
单点登录
2015-10-19 14:24 763Cas自定义登录页面Ajax实现 博客分类: ... -
session如何在http和https之间同步
2015-09-14 09:25 2254首先说下 http>https>http ... -
基于 Quartz 开发企业级任务调度应用
2015-08-17 11:17 839Quartz 是 OpenSy ... -
Java加密技术(十二)——*.PFX(*.p12)&个人信息交换文件
2015-08-17 11:17 878今天来点实际工 ... -
Java加密技术(十)——单向认证
2015-08-13 10:13 679在Java 加密技术(九)中,我们使 ... -
Java加密技术(九)——初探SSL
2015-08-13 10:12 885在Java加密技术(八)中,我们模拟 ... -
Java加密技术(八)——数字证书
2015-08-13 10:12 891本篇的主要内容为Java证书体系的实 ... -
Java加密技术(七)——非对称加密算法最高级ECC
2015-08-13 10:12 973ECC ECC-Elliptic Curv ... -
Java加密技术(六)——数字签名算法DSA
2015-08-13 10:11 1060接下来我们介绍DSA数字签名,非对称 ... -
Java加密技术(五)——非对称加密算法的由来DH
2015-08-12 16:13 869接下来我们 ... -
Java加密技术(四)——非对称加密算法RSA
2015-08-12 16:11 1094接下来我们介绍典型的非对称加密算法—— ... -
Java加密技术(三)——PBE算法
2015-08-12 16:10 958除了DES,我们还知道有DESede( ... -
Java加密技术(二)——对称加密算法DES&AES
2015-08-12 16:09 719接下来我们介绍对称加密算法,最常用的莫 ...
相关推荐
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. 加载...
使用Apache POI进行Excel导入操作,首先要加载Excel文件,然后遍历并读取所需数据。例如,可以创建` FileInputStream `对象来打开文件,然后通过` WorkbookFactory.create `方法创建` Workbook `实例。接着,获取...
在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 是...