- 浏览: 414484 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 900JVM OOM优化 jmap -heap 303 ... -
哈希算法与MurmurHash3
2022-04-12 15:25 1353MurmurHash 哈希算法 ... -
SQL注入攻击防范研究
2021-12-27 15:25 191SQL注入攻击如何攻击的: JDBC Statemen ... -
IDEA快捷键
2021-12-23 15:53 318IDEA快捷键 1.创建main函数快捷键 在编写代码 ... -
JAVA 8的Lambda表达式和Stream API研究
2018-03-21 17:31 743JAVA 8 Lambda表达式简化了代码开发,代码简洁, ... -
ThreadPoolExecutor里面4种拒绝策略(转)
2017-12-14 18:03 3132ThreadPoolExecutor类实现了Executo ... -
MySQL函数研究总结-CONCAT、REPLACE、ROUND、FLOOR和CEILING、TRUNCATE、CASE WHEN等
2017-02-20 16:26 1520CONCAT、REPLACE、ROUND、FLOOR和CEI ... -
itext实现PDF生成的两种方式-从HTML到PDF
2017-01-18 14:38 10904itext实现PDF生成的两种方式-从HTML到PDF ... -
Java处理Http请求的几种方式总结
2017-01-10 18:17 94421.commons-httpclient 简洁快速模拟H ... -
javaMelody监控接入使用
2016-03-03 23:55 13511.jar pom <!-- javamelody ... -
多线程-java线程池使用
2016-03-01 16:46 1188(一) new Thread(new SolrDataH ... -
java.io.IOException: Too many open files解决方案
2013-03-06 15:35 11694异常: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 21421)Joda-Time简介 Joda-Time提供了一组 ... -
Maven常用配置及Tomcat插件配置
2013-01-25 12:54 17215Maven用了一段时间了,基本上被我摆平了。结合Eclip ... -
GitHub无法访问,修改hosts文件解决
2013-01-22 15:30 1137前几天由于12306的抢票 ... -
MD5加密的几种实现方式研究
2013-01-10 17:08 2471MD5加密的几种实现方式如下: 一、第一种方式 Diges ... -
JAVA 定时方式大总结
2012-05-17 19:38 1437JAVA 定时方式大总结 除了Quartz之外,JAV ... -
获取spring容器applicationContext的几种方式
2012-04-13 10:39 2226一、定义web.xml,由web容器自动加载配置文件初始 ... -
J2EE快速开发框架wabacus3.2简介
2012-03-16 18:45 2107J2EE快速开发框架wabacus 3.2 发布,提高J ...
相关推荐
POI工具包可用来读写Excel,在java开发中可用来创建、导出信息到excel表格中,还可读取excel中的信息使用到应用程序中。
poi是一个Java api组件,用于处理execel和doc文件 jxl可以读取,创建,更新Excel文件,使用该api非windows系统也可以通过纯java来处理Excel。
一个java用POI读写Excel的类封装了一个读取Excel数据的方法和一个写入Excel数据的方法,写入的话可从数据库读取或自己写一个List...
利用开源组件POI3.0.2,用java语言实现了动态导出Excel文档,并且也实现了Excel文档的导入。有完整的例子,可直接使用。ExportExcel类为导出Excel报表通用类。 1.将源代码导入eclipse中 2.部署项目,启动tomcat...
HSSF (可怕的电子表格格式) : 它被用来读取和写入MS-Excel文件的xls格式。 XSSF (XML格式) : 它是用于MS-Excel中XLSX文件格式。 HPSF (可怕的属性设置格式) : 它用来提取MS-Office文件属性设置。 HWPF (可怕的字...
java读写excel源码pyexcel - 让你专注于数据,而不是文件格式 支持项目 如果贵公司已将 pyexcel 及其组件嵌入到创收产品中,请在 github 上支持我,或维护该项目并进一步开发。 如果您是个人,也欢迎您支持我,无论...
Apache POI 提供 Java 操作 Excel 解决方案(适用于 Excel97-2008)。 2 Apache POI的组件 Apache POI包含用于MS-Office的所有OLE2复合文档的类和方法。 此API的组件列表如下: POIFS:此组件是所有其他POI元素的...
主要介绍了POI读取excel简介,详细的介绍了什么是Apache POI和组件,有兴趣的可以了解了解一下
利用开源组件POI3.0.2,用java语言实现了动态导出Excel文档,并且也实现了Excel文档的导入。有完整的例子,可直接使用。ExportExcel类为导出Excel报表通用类。 1.将源代码导入eclipse中 2.部署项目,启动tomcat...
NPOI是源于一个用于读取xls,doc,ppt文档的POI 项目,POI是Java项目,后面因为有.Net的市场,于是将POI移植到.Net上。在没有安装Microsoft Office Excel的机子上也可以对Excel进行操作。
POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。 NPOI之所以强大,并不是因为它支持导出Excel,而是因为它支持导入Excel,并能"理解"OLE2文档结构,这也是其他一些Excel读写库比较弱的方面。通常...
excel的操作,在开发中是经常遇到的问题,也是程序员比较费心思的开发问题,虽然现在有jxl,poi等第三方开发组件的支持,对excel的操作变的简单了很多,但是大多数都不通用,在此提供一个excel导出工具,内含源码,...
实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 199 实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中的内容 208 7.3 字符流 209 ...
实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 199 实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中的内容 208 7.3 字符流 209 实例140 按顺序创建文件 ...
实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 199 实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中的内容 208 7.3 字符流 209 ...
实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 199 实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中的内容 208 7.3 字符流 209 实例140 按顺序...
实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 199 实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中的内容 208 7.3 字符流 209 实例140 按顺序创建文件 ...
他的excel处理很强大,对于word还局限于读取,目前只能实现一些简单文件的操作,不能设置样式。 3:Java2word是一个在java程序中调用 MS Office Word 文档的组件(类库)。该组件提供了一组简单的接口,以便j
自动化框架 这是一个Java Selenium框架,它使用testng,maven,extent ...支持从多种文件类型读取和维护数据,例如: -属性文件-借助[ApachePOI Jars]( )的Excel文件-JSON文件 测试脚本 [TestNg]( )用作单元测
在sy.test包下,添加了POI读取excel和写入excel的小例子 在sy.test包下,添加了apache的commons包下的lang3的一些常用工具示例 在sy.test包下,添加了apache的commons包下的dbutils工具的一些常用示例 v20131018 ...