- 浏览: 804276 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (360)
- Java (101)
- JPA/Hibernate (10)
- Spring (14)
- Flex/BlazeDS (37)
- Database (30)
- Lucene/Solr/Nutch (0)
- Maven/Ant (25)
- CXF/WebService (3)
- RPC/RMI/SOAP/WSDL (1)
- REST (6)
- TDD/BDD/JUnit (1)
- Servlet/JSP (2)
- AI/MachineLearning (3)
- Resource (1)
- 字符编码 (2)
- OOA/OOPS/UML (5)
- DesignPattern (8)
- 算法与数据结构 (11)
- Web&App Server (13)
- 并发&异步&无阻塞 (7)
- Entertainment (4)
- JavaScript/ExtJS (45)
- CodeStyle&Quality (1)
- svn/git/perforce (8)
- JSON (2)
- JavaScriptTesting (4)
- Others (6)
- RegularExpression (2)
- Linux/Windows (12)
- Protocal (2)
- Celebrities (1)
- Interview (1)
- 计算机语言 (1)
- English (2)
- Eclipse (5)
- TimeZone/时区 (1)
- Finance (1)
- 信息安全 (1)
- JMS/MQ (2)
- XSD/XML/DTD (3)
- Android (4)
- 投资 (3)
- Distribution (3)
- Excel (1)
最新评论
-
qdujunjie:
如果把m换成具体的数字,比如4或者5,会让读者更明白
m阶B树中“阶”的含义 -
java-admin:
不错,加油,多写点文章
关于Extjs的mixins和plugin -
xiehuaidong880827:
你好,我用sencha cmd打包完本地工程后,把app.js ...
ExtJS使用Sencha Cmd合并javascript文件为一个文件 -
KIWIFLY:
lwpan 写道inverse = "true&qu ...
Hibernate中什么时候使用inverse=true -
luedipiaofeng:
good
消除IE stop running this script弹出框
参考文档:http://poi.apache.org/spreadsheet/quick-guide.html#Iterator
请注意MissingCellPolicy定义了如何处理缺失的单元格/空单元格:
程序中通过Row.RETURN_NULL_AND_BLANK访问。
这里有一tricky的地方,如果用CellIterator的方式,当碰到空(没有定义,没有编辑过)的单元格时,CellIterator.next()读取的是空单元格右边有内容的单元格,也就是说跳过了空的单元格,如果你的程序是跟位置有关系的话,这就会出错了。比如下面的代码就会跳过空的单元格,
Iterate over rows and cells
Sometimes, you'd like to just iterate over all the rows in a sheet, or all the cells in a row. This is possible with a simple for loop.
Luckily, this is very easy. Row defines a CellIterator inner class to handle iterating over the cells (get one with a call to row.cellIterator()), and Sheet provides a rowIterator() method to give an iterator over all the rows. These implement the java.lang.Iterable interface to allow foreach loops.
这种方式本质就是使用CellIterator,跟上面的例子一样会跳过没有定义过的单元格
Iterate over cells, with control of missing / blank cells
In some cases, when iterating, you need full control over how missing or blank rows and cells are treated, and you need to ensure you visit every cell and not just those defined in the file. (The CellIterator will only return the cells defined in the file, which is largely those with values or stylings, but it depends on Excel).
In cases such as these, you should fetch the first and last column information for a row, then call getCell(int, MissingCellPolicy) to fetch the cell. Use a MissingCellPolicy to control how blank or null cells are handled.
所以如果你需要处理所有的单元格,即不管该单元格有没有定义,有没有内容,你的程序都会依赖这些单元格,那么你应该使用普通的for循环配合getRow(), getCell()方法和MissingCellPolicy策略来循环整个Excel文件的单元格。
请注意MissingCellPolicy定义了如何处理缺失的单元格/空单元格:
/** Missing cells are returned as null, Blank cells are returned as normal */ public static final MissingCellPolicy RETURN_NULL_AND_BLANK = new MissingCellPolicy(); /** Missing cells are returned as null, as are blank cells */ public static final MissingCellPolicy RETURN_BLANK_AS_NULL = new MissingCellPolicy(); /** A new, blank cell is created for missing cells. Blank cells are returned as normal */ public static final MissingCellPolicy CREATE_NULL_AS_BLANK = new MissingCellPolicy();
程序中通过Row.RETURN_NULL_AND_BLANK访问。
这里有一tricky的地方,如果用CellIterator的方式,当碰到空(没有定义,没有编辑过)的单元格时,CellIterator.next()读取的是空单元格右边有内容的单元格,也就是说跳过了空的单元格,如果你的程序是跟位置有关系的话,这就会出错了。比如下面的代码就会跳过空的单元格,
while (rowIterator.hasNext()) { row = rowIterator.next(); Iterator<Cell> cellIterator = row.cellIterator(); while(cellIterator.hasNext()) { Cell cell = cellIterator.next(); switch (cell.getCellType()) { case Cell.CELL_TYPE_BLANK: case Cell.CELL_TYPE_STRING: //your logic ... break; } } }
Iterate over rows and cells
Sometimes, you'd like to just iterate over all the rows in a sheet, or all the cells in a row. This is possible with a simple for loop.
Luckily, this is very easy. Row defines a CellIterator inner class to handle iterating over the cells (get one with a call to row.cellIterator()), and Sheet provides a rowIterator() method to give an iterator over all the rows. These implement the java.lang.Iterable interface to allow foreach loops.
这种方式本质就是使用CellIterator,跟上面的例子一样会跳过没有定义过的单元格
Sheet sheet = wb.getSheetAt(0); for (Row row : sheet) { for (Cell cell : row) { // Do something here } }
Iterate over cells, with control of missing / blank cells
In some cases, when iterating, you need full control over how missing or blank rows and cells are treated, and you need to ensure you visit every cell and not just those defined in the file. (The CellIterator will only return the cells defined in the file, which is largely those with values or stylings, but it depends on Excel).
In cases such as these, you should fetch the first and last column information for a row, then call getCell(int, MissingCellPolicy) to fetch the cell. Use a MissingCellPolicy to control how blank or null cells are handled.
// Decide which rows to process int rowStart = Math.min(15, sheet.getFirstRowNum()); int rowEnd = Math.max(1400, sheet.getLastRowNum()); for (int rowNum = rowStart; rowNum < rowEnd; rowNum++) { Row r = sheet.getRow(rowNum); int lastColumn = Math.max(r.getLastCellNum(), MY_MINIMUM_COLUMN_COUNT); for (int cn = 0; cn < lastColumn; cn++) { Cell c = r.getCell(cn, Row.RETURN_BLANK_AS_NULL); if (c == null) { // The spreadsheet is empty in this cell } else { // Do something useful with the cell's contents } } }
所以如果你需要处理所有的单元格,即不管该单元格有没有定义,有没有内容,你的程序都会依赖这些单元格,那么你应该使用普通的for循环配合getRow(), getCell()方法和MissingCellPolicy策略来循环整个Excel文件的单元格。
发表评论
-
sapjco3 notes
2019-03-21 14:51 1163sapjco https://support.sap.com/ ... -
使用RestTemplate发送post JSON请求
2019-01-12 17:30 4741private final String BASE_URL = ... -
使用RestTemplate发送post JSON请求
2019-01-12 17:30 3506private final String BASE_URL = ... -
Spring线程池ThreadPoolTaskExecutor
2018-08-06 09:51 1886<!-- spring thread pool ex ... -
Spring注解事物@Transactional不工作
2018-08-02 18:50 2676“In proxy mode (which is the de ... -
创建前缀索引报长度超出错误
2018-07-25 15:44 1731表结构定义如下: CREATE TABLE `sku` ( ` ... -
Mysql Varchar字符长度
2018-07-25 15:23 1352`sku_name` VARCHAR(200) NOT NUL ... -
使用 Spring RestTemplate 发送 post 请求
2018-07-23 18:49 11727注意点: 1)使用MultiValueMap设置入参,不要使 ... -
Java动态代理Dynamic Proxy
2018-07-21 16:33 813JAVA学习篇--静态代理VS动态代理 https://blo ... -
分布式实时日志分析解决方案 ELK 部署架构
2018-07-20 09:52 1189原文链接:http://www.importn ... -
为什么HashMap容量一定要为2的幂呢?
2018-07-19 10:07 1728原文链接:https://blog.csdn.net/wang ... -
为什么计算HashCode时通常选择31这个数?
2018-07-19 10:05 1421摘自http://www.importnew.com/2208 ... -
jackson自定义序列化和反序列化
2018-07-10 18:47 2241原文链接:https://blog.csdn.net/liu ... -
Pay special attention when modifying online running system
2017-06-23 10:25 0Never remove any properties, me ... -
Map中的Null key, Null Value
2017-06-14 10:52 1946ConcurrentHashMap的key和value都不能为 ... -
Java语法糖
2017-06-05 20:03 530Java语法糖之foreach http://www.imp ... -
Java集合相关
2017-05-24 17:55 0Java集合框架:ArrayList http://www. ... -
Java数据类型的转换:隐式(自动)转换与强制转换
2017-05-14 10:46 0http://blog.csdn.net/u011240877 ... -
分布式开放消息系统(RocketMQ)的原理与实践
2017-05-07 19:55 730分布式开放消息系统(RocketMQ)的原理与实践 http ... -
面试知识点复习(Interview knowledge review)
2017-05-07 18:39 0JVM,多线程相关知识 http://darrenzhu.it ...
相关推荐
读取Excel文件时,我们需要遍历每个工作表,然后逐行读取单元格。对于合并的单元格,Apache POI提供了`CellRangeAddress`对象来表示合并范围,我们可以使用`Sheet.getMergedRegion(int index)`方法获取。以下是一个...
该工具类是poi基于事件驱动去读取海量excel数据,解决内存溢出以及空单元格的问题。 该压缩包里面有两个文件,TestExcel.java主要是原始的处理方法,操作简单,适合小数据量的读取。 ExampleEventUserModelUtil.java...
3. **读取单元格数据**: ```java for (int i = 6; i ; i++) { for (int j = 0; j ; j++) { String NAME = rs.getRow(i).getCell(j++).getStringCellValue(); // 处理NAME... } } ``` 这段代码循环遍历每一...
在这个场景中,我们将详细探讨如何使用Java POI读取Excel文件中的数据,包括获取总行数、列数、单元格内容、合并单元格、行高、列宽以及图片等信息。 首先,确保在项目中已经引入了Apache POI的依赖库。如果你使用...
在探讨“poi读取合并单元格帮助类”的知识点时,我们首先需要理解Apache POI库在Java中的作用以及如何处理Excel文件中的合并单元格。Apache POI是一个开源的API,它允许程序创建、修改和显示Microsoft Office格式的...
Java POI是Apache软件基金会下的一个开源项目,主要用于读写Microsoft Office格式的文件,特别是Excel。在Java开发中,当你需要处理Excel数据时,POI库是一个强大的工具。本压缩包包含了一些关键资源,帮助你理解和...
2. **数据分析**:当从 Excel 文件中读取数据进行分析时,确保能够正确识别和处理合并单元格可以帮助避免数据错误。 3. **自动化测试**:在进行 UI 自动化测试时,可能需要验证页面上的表格是否正确显示了 Excel ...
在Java开发中,Apache POI库是一个非常实用的工具,用于读取、写入和修改Microsoft Office格式的文件,特别是Excel。本篇文章主要探讨如何利用POI在Excel单元格中添加超链接,并设置字体颜色。 首先,为了使用...
Java POI 是一个用于操作Microsoft Office格式文件的开源库,特别是在Java环境中处理Word文档非常有用。在本示例中,我们看到如何使用Java POI来填充Word文档,包括合并单元格、添加图片以及设置字号。以下是对代码...
有时候,我们需要在 Java 程序中读取 Excel 文件的内容,例如将 Excel 表格中的数据导入到数据库中或者进行数据分析。这时候,我们可以使用 Apache 的 POI 工具包来读取 Excel 文件。 POI(Poor Obfuscation ...
以上就是使用Java POI读取Excel 2007文件并将内容存储到List的基本过程。这个过程可以根据实际需求进行调整,比如处理表头、忽略空行、处理特殊格式的单元格等。在处理大数据量时,还需要考虑性能优化,例如使用迭代...
总结一下,使用Java和Apache POI读取Excel文件主要包括以下几个步骤: 1. 引入Apache POI依赖。 2. 创建`FileInputStream`对象打开Excel文件。 3. 使用`XSSFWorkbook`读取工作簿。 4. 遍历工作簿中的工作表和行。 5....
Java 使用 Apache POI 读取 Excel 是一个常见的任务,在处理数据导入、导出或数据分析时非常有用。Apache POI 是一个流行的开源库,它允许 Java 开发者创建、修改和显示 Microsoft Office 格式的文件,其中包括 ...
Java POI 读取 Excel 中数值精度损失问题解决是指在使用 Java POI 读取 Excel 文件时,遇到数值精度损失的问题。这种问题的出现是因为 Excel 中的数值单元格在读取时,可能会被格式化为浮点数,从而导致精度损失。 ...
Java 读取 Excel 文件是许多开发任务中的常见需求,Apache POI 是一个广泛使用的开源库,专门用于处理 Microsoft Office 格式的文件,包括 Excel。在本案例中,提供的压缩包 "poi.zip" 包含了两个子文件:poi-bin-...
poi导入/导出Excel表格,合并单元格的读取和设置
以下是一个简单的POI读取Excel文件的例子: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File; import java.io.FileInputStream; import ...
附带的`ExcelUtil.java`源码文件,通常是一个工具类,封装了使用Apache POI读取Excel文件的关键操作,比如打开文件、遍历工作表、读取单元格数据等。这样的工具类可以简化开发过程,避免重复编写基础代码。 使用...
#### 二、Java中使用POI读取Excel的关键概念 在 Java 中使用 POI 读取 Excel 文件,首先需要理解以下几个关键的概念: - **Workbook**: 表示整个 Excel 文件,可以包含一个或多个 Sheet。 - **Sheet**: 工作表,每...
在本示例"Java POI读取Excel文件基本用法Demo"中,我们将深入探讨如何使用Java POI库来读取Excel文件。 首先,我们需要在项目中引入Apache POI的依赖。对于Maven项目,可以在pom.xml文件中添加以下依赖: ```xml ...