- 浏览: 1048916 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1441)
- 软件思想&演讲 (9)
- 行业常识 (250)
- 时时疑问 (5)
- java/guava/python/php/ruby/R/scala/groovy (213)
- struct/spring/springmvc (37)
- mybatis/hibernate/JPA (10)
- mysql/oracle/sqlserver/db2/mongdb/redis/neo4j/GreenPlum/Teradata/hsqldb/Derby/sakila (268)
- js/jquery/jqueryUi/jqueryEaseyUI/extjs/angulrJs/react/es6/grunt/zepto/raphael (81)
- ZMQ/RabbitMQ/ActiveMQ/JMS/kafka (17)
- lucene/solr/nuth/elasticsearch/MG4J (167)
- html/css/ionic/nodejs/bootstrap (19)
- Linux/shell/centos (56)
- cvs/svn/git/sourceTree/gradle/ant/maven/mantis/docker/Kubernetes (26)
- sonatype nexus (1)
- tomcat/jetty/netty/jboss (9)
- 工具 (17)
- ETL/SPASS/MATLAB/RapidMiner/weka/kettle/DataX/Kylin (11)
- hadoop/spark/Hbase/Hive/pig/Zookeeper/HAWQ/cloudera/Impala/Oozie (190)
- ios/swift/android (9)
- 机器学习&算法&大数据 (18)
- Mesos是Apache下的开源分布式资源管理框架 (1)
- echarts/d3/highCharts/tableau (1)
- 行业技能图谱 (1)
- 大数据可视化 (2)
- tornado/ansible/twisted (2)
- Nagios/Cacti/Zabbix (0)
- eclipse/intellijIDEA/webstorm (5)
- cvs/svn/git/sourceTree/gradle/jira/bitbucket (4)
- jsp/jsf/flex/ZKoss (0)
- 测试技术 (2)
- splunk/flunm (2)
- 高并发/大数据量 (1)
- freemarker/vector/thymeleaf (1)
- docker/Kubernetes (2)
- dubbo/ESB/dubboX/wso2 (2)
最新评论
用Excel作为数据源,通过Java Web进行导入,需要POI的jar。
apachepoi(org.apache.poi 3.8) 可以支持公式、日期等格式!
不说废话,上代码:
Java代码 复制代码 收藏代码
1./**
2. * Jun 25, 2012
3. */
4.
5.import java.io.File;
6.import java.io.FileInputStream;
7.import java.io.IOException;
8.import java.io.InputStream;
9.import java.util.ArrayList;
10.import java.util.List;
11.
12.import org.apache.commons.io.FilenameUtils;
13.import org.apache.poi.hssf.usermodel.HSSFWorkbook;
14.import org.apache.poi.ss.usermodel.Cell;
15.import org.apache.poi.ss.usermodel.CellValue;
16.import org.apache.poi.ss.usermodel.FormulaEvaluator;
17.import org.apache.poi.ss.usermodel.Row;
18.import org.apache.poi.ss.usermodel.Sheet;
19.import org.apache.poi.ss.usermodel.Workbook;
20.import org.apache.poi.xssf.usermodel.XSSFWorkbook;
21.
22./**
23. * Excel组件
24. *
25. * @author Snowolf
26. * @version 1.0
27. * @since 1.0
28. */
29.public abstract class ExcelHelper {
30.
31. /**
32. * Excel 2003
33. */
34. private final static String XLS = "xls";
35. /**
36. * Excel 2007
37. */
38. private final static String XLSX = "xlsx";
39. /**
40. * 分隔符
41. */
42. private final static String SEPARATOR = "|";
43.
44. /**
45. * 由Excel文件的Sheet导出至List
46. *
47. * @param file
48. * @param sheetNum
49. * @return
50. */
51. public static List<String> exportListFromExcel(File file, int sheetNum)
52. throws IOException {
53. return exportListFromExcel(new FileInputStream(file),
54. FilenameUtils.getExtension(file.getName()), sheetNum);
55. }
56.
57. /**
58. * 由Excel流的Sheet导出至List
59. *
60. * @param is
61. * @param extensionName
62. * @param sheetNum
63. * @return
64. * @throws IOException
65. */
66. public static List<String> exportListFromExcel(InputStream is,
67. String extensionName, int sheetNum) throws IOException {
68.
69. Workbook workbook = null;
70.
71. if (extensionName.toLowerCase().equals(XLS)) {
72. workbook = new HSSFWorkbook(is);
73. } else if (extensionName.toLowerCase().equals(XLSX)) {
74. workbook = new XSSFWorkbook(is);
75. }
76.
77. return exportListFromExcel(workbook, sheetNum);
78. }
79.
80. /**
81. * 由指定的Sheet导出至List
82. *
83. * @param workbook
84. * @param sheetNum
85. * @return
86. * @throws IOException
87. */
88. private static List<String> exportListFromExcel(Workbook workbook,
89. int sheetNum) {
90.
91. Sheet sheet = workbook.getSheetAt(sheetNum);
92.
93. // 解析公式结果
94. FormulaEvaluator evaluator = workbook.getCreationHelper()
95. .createFormulaEvaluator();
96.
97. List<String> list = new ArrayList<String>();
98.
99. int minRowIx = sheet.getFirstRowNum();
100. int maxRowIx = sheet.getLastRowNum();
101. for (int rowIx = minRowIx; rowIx <= maxRowIx; rowIx++) {
102. Row row = sheet.getRow(rowIx);
103. StringBuilder sb = new StringBuilder();
104.
105. short minColIx = row.getFirstCellNum();
106. short maxColIx = row.getLastCellNum();
107. for (short colIx = minColIx; colIx <= maxColIx; colIx++) {
108. Cell cell = row.getCell(new Integer(colIx));
109. CellValue cellValue = evaluator.evaluate(cell);
110. if (cellValue == null) {
111. continue;
112. }
113. // 经过公式解析,最后只存在Boolean、Numeric和String三种数据类型,此外就是Error了
114. // 其余数据类型,根据官方文档,完全可以忽略http://poi.apache.org/spreadsheet/eval.html
115. switch (cellValue.getCellType()) {
116. case Cell.CELL_TYPE_BOOLEAN:
117. sb.append(SEPARATOR + cellValue.getBooleanValue());
118. break;
119. case Cell.CELL_TYPE_NUMERIC:
120. // 这里的日期类型会被转换为数字类型,需要判别后区分处理
121. if (DateUtil.isCellDateFormatted(cell)) {
122. sb.append(SEPARATOR + cell.getDateCellValue());
123. } else {
124. sb.append(SEPARATOR + cellValue.getNumberValue());
125. }
126. break;
127. case Cell.CELL_TYPE_STRING:
128. sb.append(SEPARATOR + cellValue.getStringValue());
129. break;
130. case Cell.CELL_TYPE_FORMULA:
131. break;
132. case Cell.CELL_TYPE_BLANK:
133. break;
134. case Cell.CELL_TYPE_ERROR:
135. break;
136. default:
137. break;
138. }
139. }
140. list.add(sb.toString());
141. }
142. return list;
143. }
144.}
由于Excel中的数据有日期、公式等等格式,参考http://poi.apache.org/spreadsheet/eval.html做了修改,完全兼容。
当前的Excel,C列是根据A、B相乘计算而来,D列是日期格式:
测试下:
Java代码 复制代码 收藏代码
1./**
2. * Jun 25, 2012
3. */
4.
5.import java.io.File;
6.import java.io.IOException;
7.import java.util.List;
8.
9.import static org.junit.Assert.*;
10.import org.junit.Test;
11.
12./**
13. *
14. * @author Snowolf
15. * @version 1.0
16. * @since 1.0
17. */
18.public class ExcelHelperTest {
19.
20. @Test
21. public void test() {
22. String path = "excel.xlsx";
23. List<String> list = null;
24. try {
25. list = ExcelHelper.exportListFromExcel(new File(path), 0);
26. assertNotNull(list);
27. } catch (IOException e) {
28. fail();
29. }
30.
31. }
32.}
就是这样了
apachepoi(org.apache.poi 3.8) 可以支持公式、日期等格式!
不说废话,上代码:
Java代码 复制代码 收藏代码
1./**
2. * Jun 25, 2012
3. */
4.
5.import java.io.File;
6.import java.io.FileInputStream;
7.import java.io.IOException;
8.import java.io.InputStream;
9.import java.util.ArrayList;
10.import java.util.List;
11.
12.import org.apache.commons.io.FilenameUtils;
13.import org.apache.poi.hssf.usermodel.HSSFWorkbook;
14.import org.apache.poi.ss.usermodel.Cell;
15.import org.apache.poi.ss.usermodel.CellValue;
16.import org.apache.poi.ss.usermodel.FormulaEvaluator;
17.import org.apache.poi.ss.usermodel.Row;
18.import org.apache.poi.ss.usermodel.Sheet;
19.import org.apache.poi.ss.usermodel.Workbook;
20.import org.apache.poi.xssf.usermodel.XSSFWorkbook;
21.
22./**
23. * Excel组件
24. *
25. * @author Snowolf
26. * @version 1.0
27. * @since 1.0
28. */
29.public abstract class ExcelHelper {
30.
31. /**
32. * Excel 2003
33. */
34. private final static String XLS = "xls";
35. /**
36. * Excel 2007
37. */
38. private final static String XLSX = "xlsx";
39. /**
40. * 分隔符
41. */
42. private final static String SEPARATOR = "|";
43.
44. /**
45. * 由Excel文件的Sheet导出至List
46. *
47. * @param file
48. * @param sheetNum
49. * @return
50. */
51. public static List<String> exportListFromExcel(File file, int sheetNum)
52. throws IOException {
53. return exportListFromExcel(new FileInputStream(file),
54. FilenameUtils.getExtension(file.getName()), sheetNum);
55. }
56.
57. /**
58. * 由Excel流的Sheet导出至List
59. *
60. * @param is
61. * @param extensionName
62. * @param sheetNum
63. * @return
64. * @throws IOException
65. */
66. public static List<String> exportListFromExcel(InputStream is,
67. String extensionName, int sheetNum) throws IOException {
68.
69. Workbook workbook = null;
70.
71. if (extensionName.toLowerCase().equals(XLS)) {
72. workbook = new HSSFWorkbook(is);
73. } else if (extensionName.toLowerCase().equals(XLSX)) {
74. workbook = new XSSFWorkbook(is);
75. }
76.
77. return exportListFromExcel(workbook, sheetNum);
78. }
79.
80. /**
81. * 由指定的Sheet导出至List
82. *
83. * @param workbook
84. * @param sheetNum
85. * @return
86. * @throws IOException
87. */
88. private static List<String> exportListFromExcel(Workbook workbook,
89. int sheetNum) {
90.
91. Sheet sheet = workbook.getSheetAt(sheetNum);
92.
93. // 解析公式结果
94. FormulaEvaluator evaluator = workbook.getCreationHelper()
95. .createFormulaEvaluator();
96.
97. List<String> list = new ArrayList<String>();
98.
99. int minRowIx = sheet.getFirstRowNum();
100. int maxRowIx = sheet.getLastRowNum();
101. for (int rowIx = minRowIx; rowIx <= maxRowIx; rowIx++) {
102. Row row = sheet.getRow(rowIx);
103. StringBuilder sb = new StringBuilder();
104.
105. short minColIx = row.getFirstCellNum();
106. short maxColIx = row.getLastCellNum();
107. for (short colIx = minColIx; colIx <= maxColIx; colIx++) {
108. Cell cell = row.getCell(new Integer(colIx));
109. CellValue cellValue = evaluator.evaluate(cell);
110. if (cellValue == null) {
111. continue;
112. }
113. // 经过公式解析,最后只存在Boolean、Numeric和String三种数据类型,此外就是Error了
114. // 其余数据类型,根据官方文档,完全可以忽略http://poi.apache.org/spreadsheet/eval.html
115. switch (cellValue.getCellType()) {
116. case Cell.CELL_TYPE_BOOLEAN:
117. sb.append(SEPARATOR + cellValue.getBooleanValue());
118. break;
119. case Cell.CELL_TYPE_NUMERIC:
120. // 这里的日期类型会被转换为数字类型,需要判别后区分处理
121. if (DateUtil.isCellDateFormatted(cell)) {
122. sb.append(SEPARATOR + cell.getDateCellValue());
123. } else {
124. sb.append(SEPARATOR + cellValue.getNumberValue());
125. }
126. break;
127. case Cell.CELL_TYPE_STRING:
128. sb.append(SEPARATOR + cellValue.getStringValue());
129. break;
130. case Cell.CELL_TYPE_FORMULA:
131. break;
132. case Cell.CELL_TYPE_BLANK:
133. break;
134. case Cell.CELL_TYPE_ERROR:
135. break;
136. default:
137. break;
138. }
139. }
140. list.add(sb.toString());
141. }
142. return list;
143. }
144.}
由于Excel中的数据有日期、公式等等格式,参考http://poi.apache.org/spreadsheet/eval.html做了修改,完全兼容。
当前的Excel,C列是根据A、B相乘计算而来,D列是日期格式:
测试下:
Java代码 复制代码 收藏代码
1./**
2. * Jun 25, 2012
3. */
4.
5.import java.io.File;
6.import java.io.IOException;
7.import java.util.List;
8.
9.import static org.junit.Assert.*;
10.import org.junit.Test;
11.
12./**
13. *
14. * @author Snowolf
15. * @version 1.0
16. * @since 1.0
17. */
18.public class ExcelHelperTest {
19.
20. @Test
21. public void test() {
22. String path = "excel.xlsx";
23. List<String> list = null;
24. try {
25. list = ExcelHelper.exportListFromExcel(new File(path), 0);
26. assertNotNull(list);
27. } catch (IOException e) {
28. fail();
29. }
30.
31. }
32.}
就是这样了
发表评论
-
20180222积累
2018-02-22 09:34 4791. mybatis如何通过接口查找对应的mapper. ... -
20180208积累
2018-02-08 10:28 468临时表与永久表相似,但临时表存储在 tempdb 中,当不 ... -
行业应用
2018-01-30 16:30 486git clone的时候用上面那个IP地址,下面栏中的不能 ... -
SQLite 数据库
2018-01-29 22:57 755android: SQLite创建数据 ... -
java里面获取map的key和value的方法
2018-02-01 11:29 2159获取map的key和value的方法分为两种形式: ma ... -
Eclipse中Maven WEB工程tomcat项目添加调试以及项目发布细节记录
2018-02-23 21:11 727一、建立一个maven WEB项目 1、file-&g ... -
错误:HttpServlet was not found on the Java
2018-02-23 21:12 384我们在用Eclipse进行Java web ... -
使用 java8 实现List到Array的转换
2018-02-23 21:13 2988开发中需要调用第三方的库,有些 API 的入参要求是 do ... -
Java8 利用Lambda处理List集合
2018-01-11 09:58 5630Java 8新增的Lambda表达式,我们可以很方便地并行操 ... -
java中string与json互相转化
2018-01-11 09:40 1076在Java中socket传输数据时,数据类型往往比较难选择。 ... -
JSON 数据格式
2018-01-11 09:37 474JSON(JavaScript Object Notatio ... -
java怎么读取json格式的数据
2018-01-11 09:46 1059java可以使用JSONObject和JSONArray来操作 ... -
Java8-如何将List转变为逗号分隔的字符串
2018-01-10 10:13 1989Converting a List to a String ... -
eclipse maven 打war包的两种方式
2018-02-23 21:25 703第一种:利用pom.xml文件打包。 右键pom.xml ... -
Annotation(三)——Spring注解开发
2018-02-28 09:21 428Spring框架的核心功能IoC(Inversion o ... -
Spring自定义注解
2018-02-28 09:32 594java注解:附在代码中的一些元信息,用于在编译、运行时起 ... -
Java项目
2018-01-08 10:56 0这两种解决办法已经能完全解决问题,不过值得注意的一点是,我 ... -
解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
2018-03-22 10:41 1130在Eclipse中建立好一个Maven项目后,如果Java ... -
Java @override报错的解决方法
2018-01-07 12:56 0有时候Java的Eclipse工程换一台电脑后编译总是@ove ... -
Java 8 配置Maven-javadoc-plugin
2018-01-07 09:07 1042在升级JDK至1.8之后,使用Maven-javadoc- ...
相关推荐
综上所述,Java导入Excel文件涉及的关键技术包括Apache POI库的使用,对HSSF和XSSF的理解,以及对CSV文件处理的技巧。通过熟练掌握这些知识,你可以编写出高效且健壮的文件导入程序,满足各种需求。
以上就是关于“Java导入Excel到数据库”的详细知识点,涵盖了文件路径配置、合并单元格处理、数据库连接、Excel操作和数据导入等多个方面。这个过程需要对Java、数据库操作以及Excel处理有深入理解,才能有效地完成...
测试环境:java 1.8 + poi 3.17+tomcat jar列表: commons-codec-1.10.jar commons-collections4-4.1.jar commons-fileupload-1.3.1.jar lib/commons-io-2.5.jar commons-lang-2.3.jar poi-3.17.jar poi-ooxml-3.17....
在Java编程中,处理Excel文件是一项常见的任务,特别是在数据导入和导出的场景下。...这个"java导入Excel的同时导入图片-测试demo"应该包含了一个完整的示例,演示了上述步骤,你可以根据这个示例代码进行学习和实践。
综上所述,完成“Java导入Excel到SQL Server 2008”的任务涉及到多个Java和数据库技术的结合使用,包括文件I/O、数据处理、数据库连接、事务控制以及用户交互等。在实际开发中,还需要考虑错误处理、日志记录、代码...
在本例中,我们需要关注的焦点是“Java导入excel文件的jar包”,这涉及到Java与Excel交互的核心库——Apache POI。 Apache POI是一个流行的开源项目,它允许Java开发者创建、修改和显示Microsoft Office格式的文件...
"java导入Excel需要的jar包"这个话题,就是关于在Java项目中使用特定的jar包来处理Excel文件。下面将详细介绍相关的知识点。 1. **Apache POI**: Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的...
在Java开发中,处理Excel数据是一项常见的任务,尤其是在数据导入导出、数据分析或者报表生成等场景。Apache POI是一个流行的库,它允许开发者使用Java来读取、写入和修改Microsoft Office格式的文件,包括Excel(....
java导入excel工具包2.0。修改了许多BUG,增加了许多功能
### 一、Java导入Excel的基本概念 在IT行业中,数据处理是一项常见的任务。特别是在企业级应用中,经常需要将Excel数据导入到数据库或其他系统中进行进一步处理。Java作为一种广泛使用的编程语言,在处理这种需求时...
在Java编程中,导入Excel表格是一项常见的任务,特别是在数据处理、数据分析或系统集成等领域。Excel文件通常用于存储结构化数据,而Java作为一种强大的后端语言,提供了多种方式来读取和操作这些数据。本篇文章将...
在文档`java导入excel.docx`中,可能会包含更详细的代码示例和步骤说明,你可以参考这个文档来完善你的程序。总的来说,利用Java和正确的库,你可以轻松地将Excel数据导入到各种数据库系统中,实现高效的数据处理。
在Java开发中,将Excel表格数据导入MySQL数据库是一项常见的任务,尤其在数据处理、数据分析以及系统集成等场景中。这个项目提供了一套完整的源码,可以直接在Eclipse环境中运行,帮助开发者快速实现这一功能。下面...
Excel源代码,导入导出各种工具类 <groupId>org.apache.poi <artifactId>poi <groupId>org.apache.poi <artifactId>poi-scratchpad 代码实例: String path = ""; byte[] bytes; vo.setCurrentPage(0); vo....
在Java编程环境中,导入Excel文件是一项常见的任务,特别是在数据处理、数据分析或自动化测试等领域。本项目提供了一个完整的解决方案,帮助开发者实现这一功能。下面将详细解释这个Java项目中涉及的关键知识点,...
本文将深入探讨Java中导入和判断Excel的使用方法,结合实例分析,帮助你全面理解这一技术。 首先,Java与Excel的交互通常依赖于第三方库,如Apache POI或JExcelAPI。Apache POI是目前最常用的一个,它提供了丰富的...
java Excel工具类,导入导出Excel数据,导入数据对合并表格有判断获取数据,导出数据到Excel,Excel文件不存在会创建。 博客:https://blog.csdn.net/qq_37902949/article/details/81230640
解决Java导入excel大量数据出现内存溢出的问题 在Java中导入大量Excel数据时,可能会出现内存溢出的问题,这是因为Excel文件中的大量数据会被加载到内存中,从而导致内存溢出。今天,我们将介绍如何解决这个问题。 ...
用Java实现的Excel的导入导出,简洁明了,高质量代码。