Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
苏木力格
easyexcel
提交
33e994e5
E
easyexcel
项目概览
苏木力格
/
easyexcel
与 Fork 源项目一致
从无法访问的项目Fork
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
easyexcel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
33e994e5
编写于
9月 25, 2019
作者:
庄家钜
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修复07版整个excel仅存在数字时会出现的NPE
上级
f69ebda8
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
25 addition
and
11 deletion
+25
-11
pom.xml
pom.xml
+1
-1
quickstart.md
quickstart.md
+2
-0
src/main/java/com/alibaba/excel/analysis/v07/XlsxSaxAnalyser.java
.../java/com/alibaba/excel/analysis/v07/XlsxSaxAnalyser.java
+11
-6
src/main/java/com/alibaba/excel/analysis/v07/handlers/DefaultCellHandler.java
...ibaba/excel/analysis/v07/handlers/DefaultCellHandler.java
+1
-2
src/main/java/com/alibaba/excel/util/NumberUtils.java
src/main/java/com/alibaba/excel/util/NumberUtils.java
+5
-1
src/test/java/com/alibaba/easyexcel/test/temp/simple/HgTest.java
...t/java/com/alibaba/easyexcel/test/temp/simple/HgTest.java
+1
-1
update.md
update.md
+4
-0
未找到文件。
pom.xml
浏览文件 @
33e994e5
...
...
@@ -4,7 +4,7 @@
<modelVersion>
4.0.0
</modelVersion>
<groupId>
com.alibaba
</groupId>
<artifactId>
easyexcel
</artifactId>
<version>
2.0.
3
</version>
<version>
2.0.
4
</version>
<packaging>
jar
</packaging>
<name>
easyexcel
</name>
...
...
quickstart.md
浏览文件 @
33e994e5
...
...
@@ -7,9 +7,11 @@
*
单个文件的并发写入、读取
*
读取图片
*
宏
ClassNotFoundException与java.lang.NoClassDefFoundError的区别
*
csv读取(这个后续可能会考虑)
#### 常见问题
*
关于@Data,读写的对象都用到了
[
Lombok
](
https://www.projectlombok.org/
)
,他会自动生成
`get`
,
`set`
,如果不需要的话,自己创建对象并生成
`get`
,
`set`
。
*
出现
`NoSuchMethodException`
,
`ClassNotFoundException`
,
`NoClassDefFoundError`
极大概率是jar冲突,建议
`clean`
项目,或者统一
`poi`
的版本,理论上来说
`easyexcel`
兼容poi的
`3.17`
,
`4.0.1`
,
`4.1.0`
所有较新版本
*
如果在读的时候
`Listener`
里面需要使用spring的
`@Autowired`
,给
`Listener`
创建成员变量,然后在构造方法里面传进去。而别必须不让spring管理
`Listener`
,每次读取都要
`new`
一个。
*
如果用
`String`
去接收数字,出现小数点等情况,这个是BUG,但是很难修复,后续版本会修复这个问题。目前请使用
`@NumberFormat`
直接,里面的参数就是调用了java自带的
`NumberFormat.format`
方法,不知道怎么入参的可以自己网上查询。
#### 详细参数介绍
...
...
src/main/java/com/alibaba/excel/analysis/v07/XlsxSaxAnalyser.java
浏览文件 @
33e994e5
...
...
@@ -33,6 +33,7 @@ import com.alibaba.excel.context.AnalysisContext;
import
com.alibaba.excel.exception.ExcelAnalysisException
;
import
com.alibaba.excel.read.metadata.ReadSheet
;
import
com.alibaba.excel.read.metadata.holder.ReadWorkbookHolder
;
import
com.alibaba.excel.util.CollectionUtils
;
import
com.alibaba.excel.util.FileUtils
;
/**
...
...
@@ -60,14 +61,18 @@ public class XlsxSaxAnalyser implements ExcelExecutor {
OPCPackage
pkg
=
readOpcPackage
(
readWorkbookHolder
,
decryptedStream
);
readWorkbookHolder
.
setOpcPackage
(
pkg
);
PackagePart
sharedStringsTablePackagePart
=
pkg
.
getPartsByContentType
(
XSSFRelation
.
SHARED_STRINGS
.
getContentType
()).
get
(
0
);
// Specify default cache
defaultReadCache
(
readWorkbookHolder
,
sharedStringsTablePackagePart
);
ArrayList
<
PackagePart
>
packageParts
=
pkg
.
getPartsByContentType
(
XSSFRelation
.
SHARED_STRINGS
.
getContentType
());
// Analysis sharedStringsTable.xml
analysisSharedStringsTable
(
sharedStringsTablePackagePart
.
getInputStream
(),
readWorkbookHolder
);
if
(!
CollectionUtils
.
isEmpty
(
packageParts
))
{
PackagePart
sharedStringsTablePackagePart
=
packageParts
.
get
(
0
);
// Specify default cache
defaultReadCache
(
readWorkbookHolder
,
sharedStringsTablePackagePart
);
// Analysis sharedStringsTable.xml
analysisSharedStringsTable
(
sharedStringsTablePackagePart
.
getInputStream
(),
readWorkbookHolder
);
}
XSSFReader
xssfReader
=
new
XSSFReader
(
pkg
);
analysisUse1904WindowDate
(
xssfReader
,
readWorkbookHolder
);
...
...
src/main/java/com/alibaba/excel/analysis/v07/handlers/DefaultCellHandler.java
浏览文件 @
33e994e5
...
...
@@ -27,7 +27,6 @@ import com.alibaba.excel.enums.CellDataTypeEnum;
import
com.alibaba.excel.metadata.CellData
;
import
com.alibaba.excel.util.BooleanUtils
;
import
com.alibaba.excel.util.PositionUtils
;
import
com.alibaba.excel.util.StringUtils
;
/**
* Cell Handler
...
...
@@ -106,6 +105,7 @@ public class DefaultCellHandler implements XlsxCellHandler, XlsxRowResultHolder
@Override
public
void
endHandle
(
String
name
)
{
currentTagDeque
.
pop
();
// cell is formula
if
(
CELL_FORMULA_TAG
.
equals
(
name
))
{
currentCellData
.
setFormulaValue
(
formulaStringBuilder
.
toString
());
...
...
@@ -158,7 +158,6 @@ public class DefaultCellHandler implements XlsxCellHandler, XlsxRowResultHolder
currentCellData
.
checkEmpty
();
curRowContent
.
put
(
curCol
,
currentCellData
);
}
currentTagDeque
.
pop
();
}
@Override
...
...
src/main/java/com/alibaba/excel/util/NumberUtils.java
浏览文件 @
33e994e5
...
...
@@ -26,7 +26,11 @@ public class NumberUtils {
public
static
String
format
(
Number
num
,
ExcelContentProperty
contentProperty
)
{
if
(
contentProperty
==
null
||
contentProperty
.
getNumberFormatProperty
()
==
null
||
StringUtils
.
isEmpty
(
contentProperty
.
getNumberFormatProperty
().
getFormat
()))
{
return
num
.
toString
();
if
(
num
instanceof
BigDecimal
)
{
return
((
BigDecimal
)
num
).
toPlainString
();
}
else
{
return
num
.
toString
();
}
}
String
format
=
contentProperty
.
getNumberFormatProperty
().
getFormat
();
RoundingMode
roundingMode
=
contentProperty
.
getNumberFormatProperty
().
getRoundingMode
();
...
...
src/test/java/com/alibaba/easyexcel/test/temp/simple/HgTest.java
浏览文件 @
33e994e5
...
...
@@ -24,7 +24,7 @@ public class HgTest {
@Test
public
void
hh
()
throws
IOException
{
List
<
Object
>
list
=
EasyExcel
.
read
(
new
FileInputStream
(
"D:\\test\\
折扣2007
.xls"
)).
headRowNumber
(
0
).
sheet
().
doReadSync
();
EasyExcel
.
read
(
new
FileInputStream
(
"D:\\test\\
1
.xls"
)).
headRowNumber
(
0
).
sheet
().
doReadSync
();
for
(
Object
data
:
list
)
{
LOGGER
.
info
(
"返回数据:{}"
,
JSON
.
toJSONString
(
data
));
}
...
...
update.md
浏览文件 @
33e994e5
# 2.0.4
*
修复07版整个excel仅存在数字时会出现的NPE
*
修复03版 用String接收电话会出现科学计数法的问题
# 2.0.3
*
修复重大bug 在07版读取文件的时候 小概率导致数字部分丢失
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录