- 浏览: 427236 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (184)
- IDE (4)
- dotCMS (3)
- Liferay Portal (1)
- J2EE (7)
- My SQL (16)
- IBM DB2 (3)
- Oracle (2)
- JDBC (4)
- Hibernate (3)
- JSP (0)
- Framework (4)
- Java编程 (30)
- C++编程 (0)
- Struts 1.X (2)
- Struts 2.X (6)
- Linux (11)
- Spring (7)
- JavaScript (6)
- Ajax (2)
- XML (3)
- IBM Websphere Portal (1)
- IBM Lotus Quickr (1)
- CMS (2)
- ERP (0)
- CRM (0)
- 大型网站架构开发 (1)
- 面试武器 (2)
- HTML 5 (2)
- dTree && webFxloadTree (2)
- JVM (7)
- SQL Server (3)
- Tomcat && Apache && Jboss && Weblogic-中间件 (4)
- FreeMarker (2)
- MongoDB (7)
- OpenSource开源 (24)
- Cloud (0)
- FFmpeg (3)
- Thrift (1)
- SpringSide (1)
- Design Pattern (1)
- solr&&ES (2)
- git&svn (1)
- 大数据 (8)
- 人工智能 (0)
- Hadoop (3)
- Spark (0)
- Sqoop (1)
- Flume (1)
- Hive (3)
- HDFS (4)
- ES (0)
- Redis (1)
- Kafka (3)
- MR (0)
- 机器学习 (0)
- 深度学习 (0)
- Impala (2)
- HBase (2)
- Spring Boot (1)
- Spring Cloud (0)
- 大数据架构 (6)
- 架构思想理论 (6)
- 技术管理 (4)
- 数据结构与算法 (4)
最新评论
-
huijz:
...
Spring Data JPA研究-使用Spring Data JPA 简化JPA 开发(ZZ) -
用户名不存在:
[img][/img][*]引用[u][/u][i][/i][ ...
MongoDB 模糊查询的三种实现方式-morphia实现 -
junsheng100:
请给个完整的例子吧!包括jar文件等
java调用ffmpeg获取视频文件信息参数代码 -
mj:
谢谢!!
SQL Server里面如何导出包含(insert into)数据的SQL脚本 (转载ZZ)
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能。
结构:
HSSF - 提供读写Microsoft Excel格式档案的功能。
XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
HWPF - 提供读写Microsoft Word格式档案的功能。
HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
HDGF - 提供读写Microsoft Visio格式档案的功能。
以下是实例程序:
Java代码
1.package excelread;
2.
3.import java.io.FileInputStream;
4.import java.io.FileNotFoundException;
5.import java.io.IOException;
6.import java.io.InputStream;
7.import java.util.Date;
8.import java.util.HashMap;
9.import java.util.Map;
10.
11.import org.apache.poi.hssf.usermodel.HSSFCell;
12.import org.apache.poi.hssf.usermodel.HSSFRow;
13.import org.apache.poi.hssf.usermodel.HSSFSheet;
14.import org.apache.poi.hssf.usermodel.HSSFWorkbook;
15.import org.apache.poi.poifs.filesystem.POIFSFileSystem;
16.
17./**
18. * 操作Excel表格的功能类
19. * @author:hnylj
20. * @version 1.0
21. */
22.public class ExcelReader {
23. private POIFSFileSystem fs;
24. private HSSFWorkbook wb;
25. private HSSFSheet sheet;
26. private HSSFRow row;
27. /**
28. * 读取Excel表格表头的内容
29. * @param InputStream
30. * @return String 表头内容的数组
31. *
32. */
33. public String[] readExcelTitle(InputStream is) {
34. try {
35. fs = new POIFSFileSystem(is);
36. wb = new HSSFWorkbook(fs);
37. } catch (IOException e) {
38. e.printStackTrace();
39. }
40. sheet = wb.getSheetAt(0);
41. row = sheet.getRow(0);
42. //标题总列数
43. int colNum = row.getPhysicalNumberOfCells();
44. String[] title = new String[colNum];
45. for (int i=0; i<colNum; i++) {
46. title[i] = getStringCellValue(row.getCell((short) i));
47. }
48. return title;
49. }
50.
51. /**
52. * 读取Excel数据内容
53. * @param InputStream
54. * @return Map 包含单元格数据内容的Map对象
55. */
56. public Map<Integer,String> readExcelContent(InputStream is) {
57. Map<Integer,String> content = new HashMap<Integer,String>();
58. String str = "";
59. try {
60. fs = new POIFSFileSystem(is);
61. wb = new HSSFWorkbook(fs);
62. } catch (IOException e) {
63. e.printStackTrace();
64. }
65. sheet = wb.getSheetAt(0);
66. //得到总行数
67. int rowNum = sheet.getLastRowNum();
68. row = sheet.getRow(0);
69. int colNum = row.getPhysicalNumberOfCells();
70. //正文内容应该从第二行开始,第一行为表头的标题
71. for (int i = 1; i <= rowNum; i++) {
72. row = sheet.getRow(i);
73. int j = 0;
74. while (j<colNum) {
75. //每个单元格的数据内容用"-"分割开,以后需要时用String类的replace()方法还原数据
76. //也可以将每个单元格的数据设置到一个javabean的属性中,此时需要新建一个javabean
77. str += getStringCellValue(row.getCell((short) j)).trim() + "-";
78. j ++;
79. }
80. content.put(i, str);
81. str = "";
82. }
83. return content;
84. }
85.
86. /**
87. * 获取单元格数据内容为字符串类型的数据
88. * @param cell Excel单元格
89. * @return String 单元格数据内容
90. */
91. private String getStringCellValue(HSSFCell cell) {
92. String strCell = "";
93. switch (cell.getCellType()) {
94. case HSSFCell.CELL_TYPE_STRING:
95. strCell = cell.getStringCellValue();
96. break;
97. case HSSFCell.CELL_TYPE_NUMERIC:
98. strCell = String.valueOf(cell.getNumericCellValue());
99. break;
100. case HSSFCell.CELL_TYPE_BOOLEAN:
101. strCell = String.valueOf(cell.getBooleanCellValue());
102. break;
103. case HSSFCell.CELL_TYPE_BLANK:
104. strCell = "";
105. break;
106. default:
107. strCell = "";
108. break;
109. }
110. if (strCell.equals("") || strCell == null) {
111. return "";
112. }
113. if (cell == null) {
114. return "";
115. }
116. return strCell;
117. }
118.
119. /**
120. * 获取单元格数据内容为日期类型的数据
121. * @param cell Excel单元格
122. * @return String 单元格数据内容
123. */
124. private String getDateCellValue(HSSFCell cell) {
125. String result = "";
126. try {
127. int cellType = cell.getCellType();
128. if (cellType == HSSFCell.CELL_TYPE_NUMERIC) {
129. Date date = cell.getDateCellValue();
130. result = (date.getYear() + 1900) + "-" + (date.getMonth() + 1)
131. + "-" + date.getDate();
132. } else if (cellType == HSSFCell.CELL_TYPE_STRING) {
133. String date = getStringCellValue(cell);
134. result = date.replaceAll("[年月]", "-").replace("日", "").trim();
135. } else if (cellType == HSSFCell.CELL_TYPE_BLANK) {
136. result = "";
137. }
138. } catch (Exception e) {
139. System.out.println("日期格式不正确!");
140. e.printStackTrace();
141. }
142. return result;
143. }
144.
145. public static void main(String[] args) {
146. try {
147. //对读取Excel表格标题测试
148. InputStream is = new FileInputStream("C:\\Excel表格测试.xls");
149. ExcelReader excelReader = new ExcelReader();
150. String[] title = excelReader.readExcelTitle(is);
151. System.out.println("获得Excel表格的标题:");
152. for (String s : title) {
153. System.out.print(s + " ");
154. }
155.
156. //对读取Excel表格内容测试
157. InputStream is2 = new FileInputStream("C:\\Excel表格测试.xls");
158. Map<Integer,String> map = excelReader.readExcelContent(is2);
159. System.out.println("获得Excel表格的内容:");
160. for (int i=1; i<=map.size(); i++) {
161. System.out.println(map.get(i));
162. }
163. } catch (FileNotFoundException e) {
164. System.out.println("未找到指定路径的文件!");
165. e.printStackTrace();
166. }
167. }
168.}
结构:
HSSF - 提供读写Microsoft Excel格式档案的功能。
XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
HWPF - 提供读写Microsoft Word格式档案的功能。
HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
HDGF - 提供读写Microsoft Visio格式档案的功能。
以下是实例程序:
Java代码
1.package excelread;
2.
3.import java.io.FileInputStream;
4.import java.io.FileNotFoundException;
5.import java.io.IOException;
6.import java.io.InputStream;
7.import java.util.Date;
8.import java.util.HashMap;
9.import java.util.Map;
10.
11.import org.apache.poi.hssf.usermodel.HSSFCell;
12.import org.apache.poi.hssf.usermodel.HSSFRow;
13.import org.apache.poi.hssf.usermodel.HSSFSheet;
14.import org.apache.poi.hssf.usermodel.HSSFWorkbook;
15.import org.apache.poi.poifs.filesystem.POIFSFileSystem;
16.
17./**
18. * 操作Excel表格的功能类
19. * @author:hnylj
20. * @version 1.0
21. */
22.public class ExcelReader {
23. private POIFSFileSystem fs;
24. private HSSFWorkbook wb;
25. private HSSFSheet sheet;
26. private HSSFRow row;
27. /**
28. * 读取Excel表格表头的内容
29. * @param InputStream
30. * @return String 表头内容的数组
31. *
32. */
33. public String[] readExcelTitle(InputStream is) {
34. try {
35. fs = new POIFSFileSystem(is);
36. wb = new HSSFWorkbook(fs);
37. } catch (IOException e) {
38. e.printStackTrace();
39. }
40. sheet = wb.getSheetAt(0);
41. row = sheet.getRow(0);
42. //标题总列数
43. int colNum = row.getPhysicalNumberOfCells();
44. String[] title = new String[colNum];
45. for (int i=0; i<colNum; i++) {
46. title[i] = getStringCellValue(row.getCell((short) i));
47. }
48. return title;
49. }
50.
51. /**
52. * 读取Excel数据内容
53. * @param InputStream
54. * @return Map 包含单元格数据内容的Map对象
55. */
56. public Map<Integer,String> readExcelContent(InputStream is) {
57. Map<Integer,String> content = new HashMap<Integer,String>();
58. String str = "";
59. try {
60. fs = new POIFSFileSystem(is);
61. wb = new HSSFWorkbook(fs);
62. } catch (IOException e) {
63. e.printStackTrace();
64. }
65. sheet = wb.getSheetAt(0);
66. //得到总行数
67. int rowNum = sheet.getLastRowNum();
68. row = sheet.getRow(0);
69. int colNum = row.getPhysicalNumberOfCells();
70. //正文内容应该从第二行开始,第一行为表头的标题
71. for (int i = 1; i <= rowNum; i++) {
72. row = sheet.getRow(i);
73. int j = 0;
74. while (j<colNum) {
75. //每个单元格的数据内容用"-"分割开,以后需要时用String类的replace()方法还原数据
76. //也可以将每个单元格的数据设置到一个javabean的属性中,此时需要新建一个javabean
77. str += getStringCellValue(row.getCell((short) j)).trim() + "-";
78. j ++;
79. }
80. content.put(i, str);
81. str = "";
82. }
83. return content;
84. }
85.
86. /**
87. * 获取单元格数据内容为字符串类型的数据
88. * @param cell Excel单元格
89. * @return String 单元格数据内容
90. */
91. private String getStringCellValue(HSSFCell cell) {
92. String strCell = "";
93. switch (cell.getCellType()) {
94. case HSSFCell.CELL_TYPE_STRING:
95. strCell = cell.getStringCellValue();
96. break;
97. case HSSFCell.CELL_TYPE_NUMERIC:
98. strCell = String.valueOf(cell.getNumericCellValue());
99. break;
100. case HSSFCell.CELL_TYPE_BOOLEAN:
101. strCell = String.valueOf(cell.getBooleanCellValue());
102. break;
103. case HSSFCell.CELL_TYPE_BLANK:
104. strCell = "";
105. break;
106. default:
107. strCell = "";
108. break;
109. }
110. if (strCell.equals("") || strCell == null) {
111. return "";
112. }
113. if (cell == null) {
114. return "";
115. }
116. return strCell;
117. }
118.
119. /**
120. * 获取单元格数据内容为日期类型的数据
121. * @param cell Excel单元格
122. * @return String 单元格数据内容
123. */
124. private String getDateCellValue(HSSFCell cell) {
125. String result = "";
126. try {
127. int cellType = cell.getCellType();
128. if (cellType == HSSFCell.CELL_TYPE_NUMERIC) {
129. Date date = cell.getDateCellValue();
130. result = (date.getYear() + 1900) + "-" + (date.getMonth() + 1)
131. + "-" + date.getDate();
132. } else if (cellType == HSSFCell.CELL_TYPE_STRING) {
133. String date = getStringCellValue(cell);
134. result = date.replaceAll("[年月]", "-").replace("日", "").trim();
135. } else if (cellType == HSSFCell.CELL_TYPE_BLANK) {
136. result = "";
137. }
138. } catch (Exception e) {
139. System.out.println("日期格式不正确!");
140. e.printStackTrace();
141. }
142. return result;
143. }
144.
145. public static void main(String[] args) {
146. try {
147. //对读取Excel表格标题测试
148. InputStream is = new FileInputStream("C:\\Excel表格测试.xls");
149. ExcelReader excelReader = new ExcelReader();
150. String[] title = excelReader.readExcelTitle(is);
151. System.out.println("获得Excel表格的标题:");
152. for (String s : title) {
153. System.out.print(s + " ");
154. }
155.
156. //对读取Excel表格内容测试
157. InputStream is2 = new FileInputStream("C:\\Excel表格测试.xls");
158. Map<Integer,String> map = excelReader.readExcelContent(is2);
159. System.out.println("获得Excel表格的内容:");
160. for (int i=1; i<=map.size(); i++) {
161. System.out.println(map.get(i));
162. }
163. } catch (FileNotFoundException e) {
164. System.out.println("未找到指定路径的文件!");
165. e.printStackTrace();
166. }
167. }
168.}
发表评论
-
Java应用OOM内存过高解决及优化
2022-04-27 17:49 1062JVM OOM优化 jmap -heap 303 ... -
哈希算法与MurmurHash3
2022-04-12 15:25 1630MurmurHash 哈希算法 ... -
SQL注入攻击防范研究
2021-12-27 15:25 235SQL注入攻击如何攻击的: JDBC Statemen ... -
IDEA快捷键
2021-12-23 15:53 376IDEA快捷键 1.创建main函数快捷键 在编写代码 ... -
JAVA 8的Lambda表达式和Stream API研究
2018-03-21 17:31 774JAVA 8 Lambda表达式简化了代码开发,代码简洁, ... -
ThreadPoolExecutor里面4种拒绝策略(转)
2017-12-14 18:03 3172ThreadPoolExecutor类实现了Executo ... -
MySQL函数研究总结-CONCAT、REPLACE、ROUND、FLOOR和CEILING、TRUNCATE、CASE WHEN等
2017-02-20 16:26 1608CONCAT、REPLACE、ROUND、FLOOR和CEI ... -
itext实现PDF生成的两种方式-从HTML到PDF
2017-01-18 14:38 11017itext实现PDF生成的两种方式-从HTML到PDF ... -
Java处理Http请求的几种方式总结
2017-01-10 18:17 95151.commons-httpclient 简洁快速模拟H ... -
javaMelody监控接入使用
2016-03-03 23:55 14061.jar pom <!-- javamelody ... -
多线程-java线程池使用
2016-03-01 16:46 1232(一) new Thread(new SolrDataH ... -
java.io.IOException: Too many open files解决方案
2013-03-06 15:35 11843异常:java.io.IOException: Too m ... -
Guava(石榴)使用研究-Google开源Collection类库
2013-01-29 18:33 13481)Guava 简介 Guava 中文是石榴的意思,该项 ... -
Joda-Time&Date4j使用研究-开源JAVA日期时间处理类库
2013-01-29 18:27 22471)Joda-Time简介 Joda-Time提供了一组 ... -
Maven常用配置及Tomcat插件配置
2013-01-25 12:54 17298Maven用了一段时间了,基本上被我摆平了。结合Eclip ... -
GitHub无法访问,修改hosts文件解决
2013-01-22 15:30 1137前几天由于12306的抢票 ... -
MD5加密的几种实现方式研究
2013-01-10 17:08 2523MD5加密的几种实现方式如下: 一、第一种方式 Diges ... -
JAVA 定时方式大总结
2012-05-17 19:38 1479JAVA 定时方式大总结 除了Quartz之外,JAV ... -
获取spring容器applicationContext的几种方式
2012-04-13 10:39 2294一、定义web.xml,由web容器自动加载配置文件初始 ... -
J2EE快速开发框架wabacus3.2简介
2012-03-16 18:45 2152J2EE快速开发框架wabacus 3.2 发布,提高J ...
相关推荐
首先,我们需要引入两个关键库:Apache POI用于读取Excel文件,而Swing则是Java GUI的主要组件库。Apache POI是一个开源项目,它提供了API来操作Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。 1. **安装...
在Java编程中,读取...以上就是使用Java读取Excel文件生成矩阵的基本步骤。实际开发中,你可能还需要处理更多细节,如异常处理、数据验证、优化性能等。希望这个介绍能帮助你理解这个过程,并在实际项目中灵活应用。
Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 ...在本文中,我们已经详细介绍了如何使用 Java POI 实现 Excel 导入导出功能,包括读取和写入 Excel 文件。
3. **数据读写**:Apache POI允许开发者逐行或逐单元格地读取Excel数据,也可以一次性读取整个工作簿。写入数据时,可以创建新的工作表、添加行和单元格、设置数据格式等。 4. **样式与格式**:POI支持设置单元格的...
本文将深入探讨如何使用POI库通过Java读取Excel数据,并介绍相关的jar文件。 首先,我们需要了解POI的三个主要组件: 1. poi-3.0.2-FINAL-20080204.jar:这是核心库,包含了处理Excel(HSSF)和Word(HWPF)文档的...
本文将深入探讨如何使用POI组件来处理Excel和Word文档,以及如何通过模板动态生成Excel表格。 一、Apache POI简介 Apache POI 是一个开源项目,它的主要功能是读取和写入Microsoft Office格式的文件,如.XLS(Excel...
Java的Apache POI组件是用于处理Microsoft Office格式文件的一个强大工具,特别在数据导入和导出方面表现出色。POI项目始于2001年,旨在提供一个纯Java的解决方案来读取、写入和修改Microsoft Office文档,包括Excel...
- **Apache POI库**:为了读取Excel数据,我们需要一个库,如Apache POI。它是Java中用于处理Microsoft Office文档的库,包括Excel。首先,在你的build.gradle文件中添加POI依赖。 ```groovy dependencies { ...
在Java编程中,读取Excel文件并将其导出为HTML表格是一项常见的任务,尤其是在数据处理和Web应用开发中。这个任务通常涉及到使用第三方库来处理Excel文件,因为Java标准库并不直接支持Excel格式。本篇将详细介绍如何...
在标题提到的"poi3.1"版本中,该库已经相当成熟,为开发人员提供了丰富的功能来创建、修改和读取Excel文件。在本文中,我们将深入探讨Apache POI 3.1的核心概念、使用场景以及如何通过它在Java应用程序中操作Excel。...
本示例将深入探讨如何在C#中不依赖Microsoft Office组件来读取Excel表格数据,这通常通过使用第三方库或者.NET Framework提供的System.Data.OleDb组件实现。 首先,我们介绍最常用的方法之一,即使用`System.Data....
本文将详细介绍如何使用Apache POI库来读取Excel 2007及以上版本(即XLSX格式)的文件,并提供所需的jar包信息。 首先,要使用Apache POI读取XLSX文件,你需要确保引入了正确的依赖。Apache POI项目提供了多个组件...
本文将深入探讨如何使用POI组件来处理Excel文档,包括创建、填充数据、读取信息以及在实际应用中的使用场景。 1. **POI组件介绍** Apache POI是一个开源项目,最初由Glen Stampoultzis创建,后来成为Apache软件...
读取Excel文件使用HSSF的usermodel API非常直观。首先,你需要创建一个`InputStream`,然后实例化`HSSFWorkbook`: ```java InputStream myxls = new FileInputStream("workbook.xls"); HSSFWorkbook wb = new ...
Java POI 是一个开源库,...因此,为了确保Java POI能够顺利读取Excel文件,开发者必须确保项目配置中包含了上述所有必要的库文件。同时,根据项目需求,可能还需要更新到最新版本的POI库,以获得更好的性能和兼容性。
标题中的“poi包 EXCEL模板读取填数据并导出以及在模板某行插入新的行”涉及到了Apache POI库的使用,这是一个Java API,专门用于处理Microsoft Office格式的文件,如Excel。以下是对这个主题的详细解释: Apache ...
Java读取Excel文件是开发过程中常见的任务,尤其是在处理数据导入导出、数据分析或者报表生成时。这个名为"java读取excel文件jar包20181223"的资源可能包含了一些帮助Java开发者实现这一功能的库。下面将详细讨论...
这个库允许开发者以编程方式创建、修改和读取Excel文档,极大地拓展了Java在电子表格处理上的能力。POI 4.0是该库的一个较新版本,相较于之前的版本,它可能包含了更多优化、性能提升和新的API特性。 首先,让我们...
在Java环境中,如果你需要使用POI库来读取、写入或操作Excel文件,你需要确保你的项目中包含了正确的JAR文件。在这个场景中,你提到的几个JAR文件都是Apache POI的不同版本和组件: 1. **poi-3.8.jar**:这是Apache...
使用POI读取Excel文件时,首先需要创建`FileInputStream`对象,然后通过`WorkbookFactory`创建对应的`Workbook`对象。`Workbook`代表整个Excel文件,而`Sheet`代表单个工作表。接着,通过`Row`和`Cell`对象访问具体...